pyecharts極簡入門教程
導(dǎo)讀
數(shù)據(jù)可視化是整個數(shù)據(jù)分析流程中的關(guān)鍵環(huán)節(jié),甚至有著一圖定成敗的關(guān)鍵性地位。前期,陸續(xù)推出了matplotlib和seaborn詳細(xì)入門教程,對于常規(guī)的數(shù)據(jù)探索和基本圖表制作是足夠的,但二者的一個共同短板是圖表不可交互,缺少那種活靈靈的樣子!當(dāng)Python遇到百度echarts,pyecharts便應(yīng)用而生,最重要的是支持交互、且可移植到PPT報(bào)告中,這效果簡直是再理想不過的。

pyecharts4步輸出圖表
簡潔的API設(shè)計(jì),支持鏈?zhǔn)秸{(diào)用
多種主題可選,豐富的參數(shù)設(shè)置
可交互的可視化效果,且可移植到PPT中
提供了常用圖表類型接口,包括matplotlib和seaborn不支持的一些圖表:例如詞云、可視化地圖等
基于以上這些原因,pyecharts是個人在可視化輸出過程中應(yīng)用僅次于matplotlib和seaborn的第三大可視化庫。當(dāng)然,各可視化庫都有其各自擅長場景,本無優(yōu)劣高下之分。本文旨在介紹pyecharts圖表制作中最基礎(chǔ)的套路,掌握這些基本操作、再輔以官網(wǎng)詳盡教程,基本上常規(guī)圖表都是可以的!
個人認(rèn)為學(xué)習(xí)pyecharts無需熟記各類參數(shù),而僅需掌握通用原理和流程即可,具體操作可待實(shí)際應(yīng)用時查閱相應(yīng)源碼和官網(wǎng)教程。所以本文給出的是一份極簡教程,而不會逐一介紹面面俱到。
與seaborn類似,pyecharts也提供了多個通用設(shè)置項(xiàng),包括圖表主題、生成文件類型等,一般保持默認(rèn)即可得到較為不錯的圖表,但希望嘗試新的風(fēng)格時則可調(diào)用主題接口。主題設(shè)置作為具體圖表的一個初始化參數(shù)進(jìn)行設(shè)置,例如:
from?pyecharts.charts?import?Bar
from?pyecharts?import?options?as?opts
from?pyecharts.globals?import?ThemeTyp
#主題選擇作為圖表初始化參數(shù)進(jìn)行設(shè)置
bar?=?Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
另一個通用項(xiàng)設(shè)置中較為實(shí)用的是notebook選項(xiàng),這在使用jupyter notebook或者jupyter lab中是必不可少的一項(xiàng),默認(rèn)為jupyter notebook方式。在jupyter lab中加入以下兩行通用設(shè)置后,即可調(diào)用render_notebook()在cell中查看圖表結(jié)果:
from?pyecharts.globals?import?CurrentConfig,?NotebookType??
CurrentConfig.NOTEBOOK_TYPE?=?NotebookType.JUPYTER_LAB
pyecharts提供了幾乎常用的所有圖表類型,除了柱狀圖、折線圖、餅圖、散點(diǎn)圖這4大通用可視化圖表外,還包括詞云、地圖、箱線圖、K線圖等專用圖表,另外,pyecharts也提供了常用圖表的3D形式,對于多類型圖表組合則提供了Page、Grid、Tab和Timeline4種形式,可將其看做是單圖表的容器,例如Timeline的一個簡單案例:原來用pyecharts畫個時間線圖這么簡單。
在確定圖表類型(圖表實(shí)例化)后則是添加數(shù)據(jù)。pyecharts在迭代1.0版本后,一個最大的特色就是支持鏈?zhǔn)秸{(diào)用,所以添加數(shù)據(jù)也是極其方便的。
這里有必要解釋下何為鏈?zhǔn)秸{(diào)用??赡芎芏鄍yecharts初學(xué)者在查閱官方文檔時會看到如下寫法(這里選用官網(wǎng)上直方圖的一個demo):
1from?pyecharts?import?options?as?opts
2from?pyecharts.charts?import?Bar
3from?pyecharts.faker?import?Faker
4
5c?=?(
6????Bar()
7????.add_xaxis(Faker.choose())
8????.add_yaxis("商家A",?Faker.values())
9????.add_yaxis("商家B",?Faker.values())
10????.set_global_opts(
11????????title_opts=opts.TitleOpts(title="Bar-Brush示例",?subtitle="我是副標(biāo)題"),
12????????brush_opts=opts.BrushOpts(),
13????)
14????.render("bar_with_brush.html")
15)
這個鏈?zhǔn)秸{(diào)用將圖表的實(shí)例化、添加數(shù)據(jù)、設(shè)置參數(shù)、輸出結(jié)果放在了一句代碼執(zhí)行,對新人更為不友好的是將這些代碼放在了一組圓括號之中,搞得云里霧里(至少在我初學(xué)時是這樣的),實(shí)際上理解這段代碼需要掌握兩個知識點(diǎn):
Python中可將單個表達(dá)式或單個語句放在一組圓括號內(nèi)實(shí)現(xiàn)跨行書寫,例如下面例子中,寫法1合法,而寫法2報(bào)錯,區(qū)別僅在于有無圓括號

pyecharts將圖表類的每個方法都返回了self本身,這樣每個方法的返回值都是該圖表實(shí)例,進(jìn)而實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用

理解了鏈?zhǔn)秸{(diào)用背后的原理,則很容易弄懂上面的代碼:實(shí)際上其等價(jià)于如下形式:
1from?pyecharts?import?options?as?opts
2from?pyecharts.charts?import?Bar
3from?pyecharts.faker?import?Faker
4
5c?=?Bar() # 1.實(shí)例化
6c.add_xaxis(Faker.choose()) # 2.添加x軸標(biāo)簽
7c.add_yaxis("商家A",?Faker.values()) # 3.添加y軸數(shù)據(jù)A
8c.add_yaxis("商家B",?Faker.values()) # 4.添加y軸數(shù)據(jù)B
9c.set_global_opts(
10????????title_opts=opts.TitleOpts(title="Bar-Brush示例",?subtitle="我是副標(biāo)題"),
11????????brush_opts=opts.BrushOpts(),
12????) # 5.添加通用設(shè)置項(xiàng)
13c.render("bar_with_brush.html") # 6.輸出html圖表結(jié)果
6句代碼調(diào)用了6個接口,分別完成:
實(shí)例化一個直方圖對象
添加x軸數(shù)據(jù)
添加y軸數(shù)據(jù)A
添加y軸數(shù)據(jù)B
設(shè)置通用參數(shù),包括標(biāo)題、區(qū)域圈選等
輸出html圖表文件
掌握了這一基本套路,基本上就理解了pyecharts輸出可視化圖表的通用方法。
pyecharts提供了3類圖表參數(shù)設(shè)置類型,分別是圖表設(shè)置項(xiàng)、通用設(shè)置項(xiàng)、系列設(shè)置項(xiàng),其中:
圖表設(shè)置項(xiàng)是具體到某個特定圖表對象的設(shè)置參數(shù),各圖表可選設(shè)置參數(shù)不同
通用設(shè)置項(xiàng)最為常用,例如圖表初始化設(shè)置就屬于通用設(shè)置中的一項(xiàng),另外包括標(biāo)題、坐標(biāo)軸、可視化縮放條等都屬于通用設(shè)置項(xiàng)
系列設(shè)置項(xiàng)則可以用于設(shè)置圖表的某些具體參數(shù),例如label可設(shè)置數(shù)據(jù)標(biāo)簽是否顯示以及位置等
對應(yīng)相應(yīng)設(shè)置項(xiàng),pyecharts分別提供了設(shè)置接口:
set_global_opts()
set_series_opts()
最后,pyecharts提供了將可視化圖表輸出的方式,實(shí)際較為常用的有兩種:
render()輸出到網(wǎng)頁中
render_notebook()在jupyter中即時顯示,具體區(qū)分notebook和jupyter lab兩種,可在全局參數(shù)中設(shè)置

相關(guān)閱讀:
