1. 程式人生 > >小白學 Python 資料分析(20):pyecharts 概述

小白學 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