【Python】Pyecharts 组合图形绘制实践
?來(lái)源:Python數(shù)據(jù)之道
作者:Peter
整理:Lemon
Pyecharts 組合圖形繪制實(shí)踐
大家好,之前跟大家分享了用 Pyecharts 繪制?;鶊D和餅圖:
炫酷!用Python制作漂亮的流動(dòng)?;鶊D
驚嘆,Pyecharts繪制餅圖原來(lái)可以如此漂亮!
有同學(xué)提了一個(gè)問(wèn)題,在 Pyecharts 中如何繪制多個(gè)圖形,今天我們來(lái)分享下組合圖的繪制。
在實(shí)際的工作需求中,我們經(jīng)常需要繪制多個(gè)甚至多種不同類型的圖形,有時(shí)候還需要將它們放在一個(gè)頁(yè)面中,達(dá)到一個(gè)可視化看板的效果。
在本文中將利用 pyecharts 來(lái)實(shí)現(xiàn)這個(gè)需求,同時(shí)滿足動(dòng)態(tài)可視化的效果,再次感受這個(gè)可視化神器的強(qiáng)大之處,讓你真正愛(ài)上它。
01 環(huán)境
Python 3.7
Jupyter notebook
Pandas 1.1.3
pyecharts 1.7.1
pyecharts-jupyter-installer 0.0.3
這里提醒下:
pyecharts 的版本一定要保持一致,非常重要!
pyecharts 的版本一定要保持一致,非常重要!
pyecharts 的版本一定要保持一致,非常重要!
在安裝的時(shí)候可以直接指定版本號(hào),防止出意外
02 單個(gè)圖形制作
在下面的文章部門(mén)我們先逐個(gè)繪制多種不同的圖形,這些圖形的繪制不會(huì)涉及到太多的配置項(xiàng),本文中的重點(diǎn)是如何將不同類型的圖形組合在一起。這些圖形包含:
柱狀圖
餅圖
折線圖
熱力圖
漏斗圖
儀表盤(pán)
導(dǎo)入庫(kù)
在進(jìn)行繪制數(shù)據(jù)處理和繪圖之前,我們還是需要先導(dǎo)入各種庫(kù):
from?pyecharts.globals?import?CurrentConfig,?OnlineHostType???#?事先導(dǎo)入,防止不出圖 from?pyecharts?import?options?as?opts??#?配置項(xiàng) from?pyecharts.charts?import?Bar,?Pie,?Line,?HeatMap,?Funnel,?Gauge,?Grid,?Page??#?各個(gè)圖形的類 from?pyecharts.faker?import?Faker??#?自身數(shù)據(jù) from?pyecharts.commons.utils?import?JsCode??? from?pyecharts.globals?import?ThemeType,SymbolTypeimport?pandas?as?pd import?numpy?as?np import?random模擬數(shù)據(jù)
首先我們模擬一份簡(jiǎn)單的數(shù)據(jù):通過(guò)下面的方式我們可以掌握如何利用pandas快速生成一個(gè)DataFrame數(shù)據(jù)
柱狀圖
柱狀圖的制作使用的是 Bar 方法:
bar?=?(Bar().add_xaxis(df['消費(fèi)'].tolist()).add_yaxis("5大開(kāi)支",df['數(shù)據(jù)'].tolist()).set_global_opts(title_opts=opts.TitleOpts(title="Bar-月度開(kāi)支"),legend_opts=opts.LegendOpts(is_show=False),) )bar.render_notebook()餅圖
餅圖的制作使用的是Pie:
pie?=?(Pie().add("",?[list(z)?for?z?in?zip(df['消費(fèi)'].tolist(),?df['數(shù)據(jù)'].tolist())]).set_global_opts(title_opts=opts.TitleOpts(title="Pie-月度開(kāi)支")).set_series_opts(label_opts=opts.LabelOpts(formatter=":?{c}")) )pie.render_notebook()餅圖視頻:
折線圖
折線圖的制作使用的是 Line:
line?=?(Line().add_xaxis(df['消費(fèi)'].tolist()).add_yaxis("月度開(kāi)支",?df['數(shù)據(jù)'].tolist()).set_global_opts(title_opts=opts.TitleOpts(title="Line-月度開(kāi)支")) )line.render_notebook()熱力圖
熱力圖使用的是HeatMap()方法,在這里我們使用的是pyecharts中自帶的數(shù)據(jù):
print(Faker.week) print(Faker.clock) #?0-50?的隨機(jī)數(shù)+列表推導(dǎo)式#?兩層的列表推導(dǎo)式 value?=?[[i,?j,?random.randint(0,?50)]?for?i?in?range(24)?for?j?in?range(7)]heatmap?=?(HeatMap().add_xaxis(Faker.clock)???#?橫軸標(biāo)簽.add_yaxis("熱力圖",?Faker.week,?value)???#?傳入兩個(gè)列表數(shù)據(jù).set_global_opts(title_opts=opts.TitleOpts(title="HeatMap-熱力圖"),visualmap_opts=opts.VisualMapOpts(),) )heatmap.render_notebook()熱力圖視頻:
漏斗圖
漏斗圖在用戶畫(huà)像中運(yùn)用的非常廣,尤其是在電商領(lǐng)域中,從訪問(wèn)、瀏覽到最終的支付成功等一系列的操作構(gòu)成一個(gè)漏斗,在這里我們模擬一份數(shù)據(jù)來(lái)繪制漏斗圖,先生成一個(gè)模擬數(shù)據(jù):
繪圖代碼如下:
funnel?=?(Funnel().add("商城漏斗",?[list(z)?for?z?in?zip(df1['操作'].tolist(),?df1['人數(shù)'].tolist())]).set_global_opts(title_opts=opts.TitleOpts(title="商城用戶漏斗分析")) )funnel.render_notebook()漏斗圖視頻:
儀表盤(pán)
在這里我們采用官方中的一個(gè)實(shí)例來(lái)制作簡(jiǎn)單的儀表盤(pán):
gauge?=?(Gauge().add("",?[("完成率",?80)]).set_global_opts(title_opts=opts.TitleOpts(title="Gauge-儀表盤(pán)")) )gauge.render_notebook()03 組合繪圖
在上面我們通過(guò)不同的方法繪制出了各種不同的圖形,都是動(dòng)態(tài)可視化的,非常精美的。下面我們通過(guò) Page 類來(lái)將上面的多種圖形來(lái)放到一個(gè)可視化看板中。
1、首先給出整體的繪圖代碼
#?1、柱狀圖 def?barPage()?->?Bar:?bar?=?(Bar().add_xaxis(df['消費(fèi)'].tolist()).add_yaxis("5大開(kāi)支",df['數(shù)據(jù)'].tolist()).set_global_opts(title_opts=opts.TitleOpts(title="Bar-月度開(kāi)支"),legend_opts=opts.LegendOpts(is_show=False),))return?bar#?2、餅圖 def?piePage()?->?Pie:pie?=?(Pie().add("",?[list(z)?for?z?in?zip(df['消費(fèi)'].tolist(),?df['數(shù)據(jù)'].tolist())]).set_global_opts(title_opts=opts.TitleOpts(title="Pie-月度開(kāi)支")).set_series_opts(label_opts=opts.LabelOpts(formatter=":?{c}")))return?pie#?3、折線圖 def?linePage()?->?Line:line?=?(Line().add_xaxis(df['消費(fèi)'].tolist()).add_yaxis("月度開(kāi)支",?df['數(shù)據(jù)'].tolist()).set_global_opts(title_opts=opts.TitleOpts(title="Line-月度開(kāi)支")))return?line#?4、熱力圖def?heatmapPage()?->?HeatMap:value?=?[[i,?j,?random.randint(0,?50)]?for?i?in?range(24)?for?j?in?range(7)]heatmap?=?(HeatMap().add_xaxis(Faker.clock).add_yaxis("熱力圖",?Faker.week,?value).set_global_opts(title_opts=opts.TitleOpts(title="HeatMap-熱力圖"),visualmap_opts=opts.VisualMapOpts(),))return?heatmap#?5、漏斗圖 def?funnelPage()?->?Funnel:funnel?=?(Funnel().add("商品",?[list(z)?for?z?in?zip(Faker.choose(),?Faker.values())]).set_global_opts(title_opts=opts.TitleOpts(title="Funnel-漏斗圖")))return?funnel#?6、儀表盤(pán) def?gaugePage()?->?Gauge:gauge?=?(Gauge().add("",?[("完成率",?80)]).set_global_opts(title_opts=opts.TitleOpts(title="Gauge-儀表盤(pán)")))return?gauge#?上面是6個(gè)圖形的代碼,下面利用Page進(jìn)行組合 #?!!!?關(guān)鍵步驟 page?=?(Page(layout=Page.DraggablePageLayout).add(barPage(),piePage(),linePage(),funnelPage(),heatmapPage(),gaugePage()) )page.render("page_demo.html")2、現(xiàn)在解釋一下上面的代碼:
柱狀圖、餅圖等不同的圖形我們封裝成不同的函數(shù)來(lái)實(shí)現(xiàn)
使用Page類的add方法,添加上面的各個(gè)函數(shù)
最后使用page.render()來(lái)生成一個(gè)html文件,就是我們的各個(gè)圖形下一個(gè)html頁(yè)面中
現(xiàn)在看看生成的組合圖形1的效果:
組合圖形1:
在目前生成的組合圖形1中,要注意4點(diǎn):
左上角有個(gè)save config的按鈕,接下來(lái)這個(gè)按鈕大有用處
整體的圖形是單個(gè)上下排列的,且整體靠左,右邊很多的空白
每個(gè)圖形都是虛線框,這表示圖形可變大小,同時(shí)可以移動(dòng)的
整體需要上下滑動(dòng)來(lái)瀏覽全部的圖形,視覺(jué)效果不佳
下面我們通過(guò)save config按鈕來(lái)進(jìn)行改動(dòng),生成一個(gè)我們自己想看到的組合圖形2效果:
組合圖形2:
當(dāng)我們把圖形按照我們的需求排列OK之后,此時(shí)圖形仍然沒(méi)有被固定下來(lái),如果我們刷新當(dāng)前頁(yè)面,又會(huì)變成組合圖形1的效果。
現(xiàn)在點(diǎn)擊save config按鈕,保存我們的配置文件。此時(shí)會(huì)在本地當(dāng)前目錄下生成一個(gè)chart_config.json的配置文件。
接下來(lái)我們利用這個(gè)配置來(lái)生成上面我們想要達(dá)到的效果圖形,將圖形的格式固定下來(lái),使用下面的代碼:
Page.save_resize_html("page_demo.html",???#?上面的HTML文件名稱cfg_file="chart_config.json",??#?保存的json配置文件dest="new_page_demo.html")??#?新HTML文件名稱在jupyter notebook中再運(yùn)行一次,這樣我們就將圖形的格式固定下來(lái)了。通過(guò)這種方式我們可以設(shè)置圖形的任意大小和位置,部分截圖如下:
本文結(jié)合各種圖形的簡(jiǎn)單制作,最終使用 Page 將各種圖形組合在一起,形成了一個(gè)可視化看板的效果,希望對(duì)大家掌握 Pyecharts 的使用有所幫助,真正在實(shí)際工作中使用到 Pyecharts 這個(gè)視化神器。
作者簡(jiǎn)介
Peter,碩士畢業(yè)僧一枚,從電子專業(yè)自學(xué)Python入門(mén)數(shù)據(jù)行業(yè),擅長(zhǎng)數(shù)據(jù)分析及可視化。喜歡數(shù)據(jù),堅(jiān)持跑步,熱愛(ài)閱讀,樂(lè)觀生活。個(gè)人格言:不浮于世,不負(fù)于己
個(gè)人站點(diǎn):www.renpeter.cn,歡迎常來(lái)小屋逛逛
往期精彩回顧適合初學(xué)者入門(mén)人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯 獲取本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開(kāi): https://t.zsxq.com/qFiUFMV 本站qq群704220115。加入微信群請(qǐng)掃碼:總結(jié)
以上是生活随笔為你收集整理的【Python】Pyecharts 组合图形绘制实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win7系统如何取消自动开机
- 下一篇: 腾讯视频下载下来的视频在哪里