近年視覺化受到很高的關注熱度,生硬的數據藉由視覺化帶出了靈魂,拉近了溝通的距離,達到訊息的有效傳遞,成大教授呂宗學老師對視覺化有一段很精闢的闡述:「視覺化的目的,幫助觀眾在茫茫數據中,找到原本想要找數據,發現原本看不到的問題。」。
本著這個想法,將政府開放的公開數據做運用,以較容易理解的方式做視覺化呈現,起初選定台灣公部門使用度較高的Tableau軟體,希望能將歷年累積的數據用動態的方式呈現於網頁上,但嘗試後發現,Tableau動態泡泡圖僅能於儀錶板上呈現,發佈成網頁後就無動態播放的功能,且於2012年開始就有相關使用者反應希望未來可以有這項功能,只是截至2018年底仍未有這項功能(如果希望Tableau新增這項功能,可以來此投票:https://community.tableau.com/ideas/1201)。
有鑑於此,與其受限於現有的軟體功能不如轉個彎使用python,python有相當多的軟體套件可以運用,基本上可以涵蓋大部分想要呈現的視覺化做圖。
這次介紹一個比較簡單的套件bubbly,bubbly套件運用Plotly套件的一些功能,畫出動態泡泡圖,讓使用者可以不用撰寫繁複的語法,只要對python有基本的概念,就可以運用bubbly套件,帶入參數,畫出如同Hans Rosling在TED Talk令人讚嘆的視覺化呈現。
泡泡圖是一種散佈圖的變化型,將原本的沒有提供資訊的點替換成泡泡,利用泡泡的大小提供多一個維度的訊息
操作步驟
1.選定主題,準備素材
以2012-2016年10大癌症醫療花費及死亡率變化為例(資料來源為政府開放資料),畫出動態泡泡圖。開始執行前需要先安裝套件bubbly跟plotly,在Window環境下,開起命令提示字元,輸入pip install bubbly以及pip install plotly,安裝完成後,就可進入繪圖步驟。
2.確認繪圖需要用到的參數:
X軸(x_column):各癌症醫療花費總額(單位:新台幣億元)
Y軸(y_column):各癌症死亡率(%)
泡泡大小(size_column):各癌症就醫人數
泡泡顏色(bubble_column):代表各癌症
時間軸(time_column):年份
3.繪製泡泡圖
from bubbly.bubbly import bubbleplot from plotly.offline import plot figure = bubbleplot(dataset=df, x_column='med_cost', y_column='death_rate', bubble_column='Cancer', time_column='year', size_column='number', color_column='Cancer', x_title="醫療花費(億)", y_title="死亡率(%)", title='2012-2016年十大癌症變化', x_logscale=False , scale_bubble=1, height=600) iplot(figure,config={'scrollzoom': True})
其他相關參數如下:
Title:圖表標題
x_title:X軸標題
y_title:Y軸標題
scale_bubble:泡泡的大小
x_logscale: X軸是否為log
scale
height:設定圖表高度
留言
張貼留言