終於將琳瑯滿目的數據分析出來卻發現只有白底黑次的數字時,要怎麼把數據更直覺地呈現給客戶呢? 大家都希望資料畫面更加一目了然,最好還有繽紛的色彩加上動畫,ECharts結合Python幫我們實現這個願望,讓我們看看怎麼快速上手資料視覺化吧!
經常使用Python做資料分析的大家,一定也希望分析好的資料能夠漂亮、直覺的呈現在客戶面前,資料視覺化的需求越來越大,好看的報表更能夠幫你說出完整的故事邏輯。除了大家經常聽到的BI工具(PowerBI、Tableau…etc.)外,也有許多Python第三方工具提供視覺化處理,第一個直覺想到、平常就就會使用的matplotlib,其實Python中還有Plotly、bokeh、vispy、pyecharts、networkx、seaborn…等都是可以繪圖的視覺化工具喔!
而C除了matplotlib外,特別喜歡pyecharts這個開源工具,pycharts有一個很大優勢就是它直接支援pandas
資料型態,不用再轉成Tidy
這類數據形態。
另外,pyecharts包括30種以上的常見圖表類型,套用非常快速,它也可以支援Jupyter Notebook 和 JupyterLab,除了圖表可以存成圖檔外,更可以生成HTML讓使用者直接進行互動,這邊就跟著C試試看幾種pyecharts使用成果吧。
💻工具選擇與安裝
pyecharts在v1.0+
開始支援Python3.6+
,它與原先支援Python2.7
的v0.5.x
版本在語法和使用習慣上都有全新改版,安裝時要特別注意喔!
我們這次選擇 Python=3.8
的環境下安裝最新的pyecharts:
pip install pyecharts -U
確認已經安裝 pyecharts=1.9.0
的版本後,就可以開始使用了!
import pyechartsprint(pyecharts.__version__) ## 1.9.0
💡 Start
正式開始前,大家先來看一下pyecharts結果吧,這是將圖表生成HTML後,可以透過鼠標點選想看的圖例、並看到更詳細的數據,隨時有更動HTML時只須重新整理網頁就可以看到最新的數據,提升使用者互動的良好度。
圖表風格
pyecharts基於前端echarts框架產生的視覺化API,有很多豐富多元的範例圖表,也有非常多的參數配置可以修改圖表內容,其中包括標籤的位置、顏色、大小等,圖表的樣式也可以選擇深、淺、去背各種不同風格,因為這些完善的參數操作上更容易上手。
下圖示範有無去背的條狀圖,上圖是去背的圖表可以清楚看到黃底的背景,下圖則是白色背景的圖表,要調整這種整體的主題類型可以用初始化選項中的主題類型設定:
init_opts=opts.InitOpts(theme=ThemeType.LIGHT) ## 透明底
init_opts=opts.InitOpts(theme=ThemeType.WHITE) ## 白底
圖表類型
除了常見的:條狀圖、圓餅圖、表格等,pyecharts也有3D圖、水量圖這些範例,更特別的還提供地圖、日曆這些圖表類型,只要將數據、標頭帶入就可以直接顯示,也可以簡易調整位置間距這些配置,整體API做的非常完善,但由於圖表的種類比較固定,靈活度終究沒有從頭自己建構的圖表高,但對於報表呈現和基礎視覺化,C覺得操作上並不會綁手綁腳,基本的視覺呈現都可以表現出來。
接下來直接開始示範五種圖表使用操作吧!
1️⃣ 條狀圖
首先,介紹一下pyecharts有兩種編寫方式,第一個是v1.0後開始支援的方法鏈(Method Chaining,鏈式調用),第二種是傳統的單獨調用方式。
兩種編寫方式產出的圖表示一樣的,在v1+
的pyecharts中仍然保留單獨調用的編譯方式,因此大家可以按照自己的撰寫習慣來挑選。
2️⃣ 日曆、漏斗、儀表板、地圖
第二部份來嘗試pyecharts中4種比較特別的圖表模版:
- 日曆:可以直接設定目標的日月年份就會依據星期得排放顯示出來,日曆的使用我覺地非常便利,想要看整年度的數據變化時可以一目了然,這次範例我選擇2020整年度的時間,星期幾為Y軸,月份為X軸,隨機產生365天的行走步數數量。
最後的結果切分成五種數量顏色區間來顯示,將鼠標移到不同區間時,那個區間的天數會變亮來加強顯示,pyecharts真的有許多互動性的使用體驗。
- 漏斗:漏斗圖例沒有XY軸,在這次範例中直接隨機pyecharts中
faker
的商品類別和數量,會依據數量多少由上到下排成一個漏斗的形狀。
這次隨機選取衣服商品數量作為資料輸入,faker
中也有水果、飲料、手機品牌等類別可以選擇;最後程現在的結果圖如下,在網頁中將滑鼠放到色塊上可以看到詳細的商品數量。
因為pyecharts是百度開源的API,所以直接從裡面調用的範例都會是簡體字喔,如果不喜歡可以換成自己的數據來呈現。
- 儀表板:以刻度表示度量,指針表示維度,直觀地顯示不同百分比,以下範例中顯示專案進度時就可以用儀表板來表示。
刻度的顏色、區間大小可以在AxisLineOpts做參數的調整。
- 地圖:目前pyecharts僅提供世界地圖和中國地圖兩種,廣泛性不高,但以世界地圖的呈現來說還堪用。
💛 後記
這篇先帶入pyecharts幾個優點:
- 可以直接生成html點擊就是網頁,省下自己編寫網站的時間。
- 支援地圖、時間軸(日期、年份)等。
- 帶有動畫效果,視覺化功能齊全、畫面豐富。
- 直接使用Pandas數據型態,不用另外轉換格式。
上述的強項使數據視覺化更可以清楚說明資料分析其中的精華,用直接明瞭的畫面讓使用者容易辨別並找到需要的統計數據,網頁的簡易互動也可以詳述資料內容;pyecharts用很簡便的介接方式、提供多樣化圖像模版,這篇提供了五種圖形化範例,除了圖表形式不太一樣外,其實參數的設定都大同小異,pyecharts還有很多風格類型,歡迎大家一起玩看看喔!
🔆 GitHub
完整數獨程式碼可以前往GitHub參照。
下一篇會介紹pyecharts怎麼呈現多個圖表,或是生成一個有分頁的互動介面給大家~
🌻參考資料
歡迎指教或分享您的經驗唷! 若小小心得有幫上您,請在底下長案拍手給予鼓勵,謝謝您的閱讀~