[資料視覺化 Data Visualization]Part7 – 水情(水球)圖

又到了週末了,相信這幾週大家都過得非常辛苦,但請互相忍耐,渡過這波才會有美好的未來啊,別為了貪一時快樂方便,反而影響後續的生活!!

很重要說三次!!!

減少外出與聚會,勤洗手,做好個人衛生!

減少外出與聚會,勤洗手,做好個人衛生!

減少外出與聚會,勤洗手,做好個人衛生!

不過關心疫情之虞,其實水情也是有很大的問題,沒水怎麼洗手啦!不過看氣象說這幾天鋒面有過來,希望下好下滿,下到水庫中,也可以澆熄疫情這把野火,所以今天來說說看怎麼樣畫一個水球圖,透過水球圖比較容易看出一個區間的百分比,或是用來看看庫存等需要知道剩餘數量的百分比都蠻好用的.

資料來源 : 經濟部水利署

資料取用日期 : 2021/05/28

由於本次主要展示水球圖,之前也通過Excel讀取資料,現在就不重複,只著重產生水球圖.

開始畫圖吧!

0.目標

會動的水球圖

1.載入所需的元件
#載入所需元件
#這次是畫水球圖當然是載入Liquid,Grid是用來將多個水球圖集合再一起用的
from pyecharts.charts import Liquid,Grid
from pyecharts import options as opts
#載入JS寫formatter用
from pyecharts.commons.utils import JsCode
2.先找出要畫那個水庫的蓄水量

20210528各水庫蓄水量

3.先畫一個最低的德基水庫
liquid_1 = (
    Liquid()
    .add(
        series_name="德基水庫蓄水量",
        data=[0.0142], #數值以小數點表示,小數點第二位四捨五入
    )
    #加入標題與子標題
    .set_global_opts(title_opts=opts.TitleOpts(title="德基水庫蓄水量", subtitle="2021/05/28",))
)
liquid_1.render_notebook()
德基水庫

德基水庫

4.再畫一個石門水庫看看好了!

liquid_1 = (
    Liquid()
    .add(
        series_name="石門水庫",
        data=[0.0963],
        shape='roundRect', #變換水球圖的圖型
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="石門水庫蓄水量", subtitle="2021/05/28",))
)
liquid_1.render_notebook()

石門水庫

5.最後我想畫一個翡翠水庫,然後把三個水庫一起呈現
liquid_1 = (
    Liquid()
    .add(
        series_name="德基水庫",
        data=[0.0142],
        shape='circle',
        color=['#FF0000'],
        center=["15%", "45%"],
        #加入了Label的設定,主要是可以顯示水庫名稱與百分比在圖上面,並且採用高精度,非四捨五入呈現真實水情
        label_opts=opts.LabelOpts(
                font_size=20,
                formatter=JsCode(
                    """function (param) {
                        return ('德基水庫 ' + Math.floor(param.value * 10000) / 100) + '%';
                    }"""
                ),
                position="inside",
            ),
     )
     .set_global_opts(title_opts=opts.TitleOpts(title="水庫蓄水量", subtitle="2021/05/28",))
)

liquid_2 = (
    Liquid()
    .add(
        series_name="石門水庫",
        data=[0.0963],
        color=['#FF9797'],
        #is_outline_show=False,
        shape='circle',
        center=["45%", "45%"],
        label_opts=opts.LabelOpts(
                font_size=20,
                formatter=JsCode(
                    """function (param) {
                        return ('石門水庫 ' + Math.floor(param.value * 10000) / 100) + '%';
                    }"""
                ),
                position="inside",
            ),
        )
)

liquid_3 = (
    Liquid()
    .add(
        series_name="翡翠水庫",
        data=[0.6104],
        shape='circle',
        center=["75%", "45%"],
        label_opts=opts.LabelOpts(
                font_size=20,
                formatter=JsCode(
                    """function (param) {
                        return ('翡翠水庫 ' + Math.floor(param.value * 10000) / 100) + '%';
                    }"""
                ),
                position="inside",
            ),
        )
)
grid = Grid().add(liquid_1, grid_opts=opts.GridOpts()).add(liquid_2, grid_opts=opts.GridOpts()).add(liquid_3, grid_opts=opts.GridOpts())
grid.render_notebook() #jupyernotebook專用

20210528個水庫蓄水量圖

6.其實他是會動的喔!由此可見水情是很吃緊的,防疫期間也要節約用水啊!!

會動的水球圖

按照往例寫在後頭:

身為一個IT與企業人,取之網路用之網路,也想為社會上盡一些力量,做點CSR(企業社會責任 Corporate Social Responsibility),透過我小小的力量,藉此拋磚引玉,我整理了相關視覺化資料簡報(目前約一百多頁)與怎麼畫圖表的程式碼都已經寫成Step by Step的Jupyter Notebook教學文件,有些會陸續在Blog說明,但若各位賢達也想給予鼓勵做些公益,歡迎到任何慈善公益團體捐款(E.g 罕見疾病、脊髓損傷、唐寶寶、愛貓愛狗…etc,比較小型的公益團體),讓愛心可以分散力量發揮出去,並且透過留言聯繫我,提供捐款證明,我將此份文件無償提供給您參考(文件會陸續更新,以當下最新版本提供).

ps 給醫護鼓勵打氣也可以啊~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *