小白學 Python 資料分析(20):pyecharts 概述
人生苦短,我用 Python
前文傳送門:
小白學 Python 資料分析(1):資料分析基礎
小白學 Python 資料分析(2):Pandas (一)概述
小白學 Python 資料分析(3):Pandas (二)資料結構 Series
小白學 Python 資料分析(4):Pandas (三)資料結構 DataFrame
小白學 Python 資料分析(5):Pandas (四)基礎操作(1)檢視資料
小白學 Python 資料分析(6):Pandas (五)基礎操作(2)資料選擇
小白學 Python 資料分析(7):Pandas (六)資料匯入
小白學 Python 資料分析(8):Pandas (七)資料預處理
小白學 Python 資料分析(9):Pandas (八)資料預處理(2)
小白學 Python 資料分析(10):Pandas (九)資料運算
小白學 Python 資料分析(11):Pandas (十)資料分組
小白學 Python 資料分析(12):Pandas (十一)資料透視表(pivot_table)
小白學 Python 資料分析(13):Pandas (十二)資料表拼接
小白學 Python 資料分析(14):Pandas (十三)資料匯出
小白學 Python 資料分析(15):資料視覺化概述
小白學 Python 資料分析(16):Matplotlib(一)座標系
小白學 Python 資料分析(17):Matplotlib(二)基礎操作
小白學 Python 資料分析(18):Matplotlib(三)常用圖表(上)
小白學 Python 資料分析(19):Matplotlib(四)常用圖表(下)
引言
在開始說 pyecharts 之前,先說一個個人的拙見,我一直認為學習、瞭解或者使用某個類庫的時候最好是通過官方的文件,有些時候某些庫的文件是由外文編寫的,閱讀不便的時候通過瀏覽器自帶的翻譯大致也能看懂。而 pyecharts 是由國人做的,有中文文件,下面先貼幾個官方的連結:
官方文件:https://pyecharts.org/#/zh-cn/intro
GitHub:https://github.com/pyecharts/pyecharts
百度 Echarts 示例:https://www.echartsjs.com/examples/zh/
簡介就直接摘抄官方文件了,以下內容來自官方文件:
Echarts 是一個由百度開源的資料視覺化,憑藉著良好的互動性,精巧的圖表設計,得到了眾多開發者的認可。而 Python 是一門富有表達力的語言,很適合用於資料處理。當資料分析遇上資料視覺化時,pyecharts 誕生了。
- 簡潔的 API 設計,使用如絲滑般流暢,支援鏈式呼叫
- 囊括了 30+ 種常見圖表,應有盡有
- 支援主流 Notebook 環境,Jupyter Notebook 和 JupyterLab
- 可輕鬆整合至 Flask,Django 等主流 Web 框架
- 高度靈活的配置項,可輕鬆搭配出精美的圖表
- 詳細的文件和示例,幫助開發者更快的上手專案
- 多達 400+ 地圖檔案以及原生的百度地圖,為地理資料視覺化提供強有力的支援
安裝
安裝還是照著官方文件來,首先是使用 pip 進行安裝:
pip install pyecharts
這裡有一點需要注意,目前的 pyecharts v1.x 的版本僅支援 python3.6 以上的版本。
如果不想通過 pip 安裝,還可以使用原始碼進行安裝:
git clone https://github.com/pyecharts/pyecharts.git
cd pyecharts
pip install -r requirements.txt
python setup.py install
# 或者執行 python install.py
官方還為我們提供了一個檢視當前 pyecharts 版本的方法:
import pyecharts
print(pyecharts.__version__)
我這邊執行得到的結果是:
1.7.0
目前(2020年3月20日)官方最新的版本為 v1.7.1 ,檢視地址為:https://github.com/pyecharts/pyecharts/releases ,可以看到最新版本是 8 天前釋出的。
因為我這裡的 pyecharts 是上週裝的,在這之間正好釋出了新的版本,如果想要更新版本,可以使用以下 pip 命令進行更新:
pip install --upgrade pyecharts
我這裡更新完以後再次執行上面的檢視版本的方法,已經變成最新的 v1.7.1 版本了。
快速開始
pyecharts 庫裝好了,接下來趕緊搞一個最簡單的示例先試試看:
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis([2011,2012,2013,2014,2015,2016,2017])
bar.add_yaxis("產品銷量", [58000,60200,63000,71000,84000,90500,107000])
bar.render()
呼叫 render()
方法的時候會在本地生成一個 HTML 檔案,預設會在當前目錄生成 render.html 檔案,同時也可以傳入路徑的引數,如 bar.render("mycharts.html")
,拿著這個 HTML 檔案直接扔到瀏覽器中執行就能看到我們剛才建立的柱狀圖了。
pyecharts 的方法都支援鏈式呼叫,就是上面這一段我們可以換成鏈式呼叫的寫法,如下:
from pyecharts.charts import Bar
bar = (
Bar()
.add_xaxis([2011,2012,2013,2014,2015,2016,2017])
.add_yaxis("產品銷量", [58000,60200,63000,71000,84000,90500,107000])
)
bar.render()
鏈式呼叫的除了寫法和前面的不同,作用完全相同,各位同學選擇自己習慣的寫法就行。
在使用 pyecharts 的時候,大量的配置是使用 options 完成的,下面看一個使用 options 進行主標題和副標題配置的小示例:
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = (
Bar()
.add_xaxis([2011,2012,2013,2014,2015,2016,2017])
.add_yaxis("產品銷量", [58000,60200,63000,71000,84000,90500,107000])
.set_global_opts(title_opts=opts.TitleOpts(title="11 ~ 17年 xxx 公司 xx 產品銷量圖", subtitle="這裡是副標題"))
)
bar.render('render_1.html')
# 呼叫方法寫法,與上面的鏈式呼叫無任何區別
bar = Bar()
bar.add_xaxis([2011,2012,2013,2014,2015,2016,2017])
bar.add_yaxis("產品銷量", [58000,60200,63000,71000,84000,90500,107000])
bar.set_global_opts(title_opts=opts.TitleOpts(title="11 ~ 17年 xxx 公司 xx 產品銷量圖", subtitle="這裡是副標題"))
bar.render('render_1.html')
如果想要將結果儲存成圖片,需要使用 snapshot-selenium 將結果渲染成圖片,如果沒有安裝的話需要先安裝,安裝命令如下:
pip install snapshot_selenium
這裡有一點需要注意,如果想要正常的使用 snapshot_selenium ,需要本地有和當前 Chrome 正常配套的 ChromeDriver ,如果沒有,需要先安裝。
如果是我的老讀者的話,前面在介紹爬蟲的時候有介紹過 ChromeDriver 怎麼安裝,具體可以參考「小白學 Python 爬蟲(2):前置準備(一)基本類庫的安裝」
接著看一個示例:
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
bar = (
Bar()
.add_xaxis([2011, 2012, 2013, 2014, 2015, 2016, 2017])
.add_yaxis("產品銷量", [58000, 60200, 63000, 71000, 84000, 90500, 107000])
.set_global_opts(title_opts=opts.TitleOpts(title="11 ~ 17年 xxx 公司 xx 產品銷量圖", subtitle="這裡是副標題"))
)
make_snapshot(snapshot, bar.render(), "bar_1.png")
這時,在同目錄下生成了一個名稱為 bar_1.png
的圖片,就不貼出來了,和上面的圖片是一樣的,只是這張 png 圖片是透明底的。
同時,pyecharts 還提供了 10+ 種內建主題,如果有需要也可以自己定製自己喜歡的主題,示例如下:
from pyecharts.charts import Bar
from pyecharts.globals import ThemeType
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis([2011, 2012, 2013, 2014, 2015, 2016, 2017])
.add_yaxis("產品A", [58000, 60200, 63000, 71000, 84000, 90500, 107000])
.add_yaxis("產品B", [78000,80200,93000,101000,64000,70500,87000])
.set_global_opts(title_opts=opts.TitleOpts(title="11 ~ 17年 xxx 公司 xx 產品銷量圖", subtitle="這裡是副標題"))
)
bar.render('render_2.html')
結果如下:
程式碼倉庫
老規矩,所有的示例程式碼都會上傳至程式碼管理倉庫 Github 和 Gitee 上,方便大家取用。
示例程式碼-Github
示例程式碼-Gitee
參考
https://pyecharts.org/#/zh-cn/quickst