全文3000字,Pyecharts制作可視化大屏全流程! (附代碼分享)
??????關(guān)注我,和老表一起學(xué)Python、云服務(wù)器
有粉絲提到說(shuō)是不是可以寫一篇用Pyecharts模塊做可視化大屏的相關(guān)教程,小編立馬就答應(yīng)了他的請(qǐng)求。那么今天我們就來(lái)說(shuō)說(shuō)如何用Pyecharts模塊來(lái)制作炫酷的可視化大屏,最后的效果如下

分別使用 Pyecharts制作各類圖表,包括柱狀圖、地圖、餅圖等等使用 Pyecharts當(dāng)中的組合圖表功能,將所有圖片拼接在一張html文件中進(jìn)行展示
數(shù)據(jù)的來(lái)源
df.info()
output
'pandas.core.frame.DataFrame'>
RangeIndex:?1000?entries,?0?to?999
Data?columns?(total?17?columns):
?#???Column??Non-Null?Count??Dtype?????????
---??------??--------------??-----?????????
?0???訂單編號(hào)????1000?non-null???object????????
?1???分支??????1000?non-null???object????????
?2???省份??????1000?non-null???object????????
?3???顧客類型????1000?non-null???object????????
?4???性別??????1000?non-null???object????????
?5???商品類型????1000?non-null???object????????
?6???單價(jià)??????1000?non-null???float64???????
?7???數(shù)量??????1000?non-null???int64?????????
?8???Tax?5%??1000?non-null???float64???????
?9???總價(jià)??????1000?non-null???float64???????
?10??日期??????1000?non-null???datetime64[ns]
?.......??
dtypes:?datetime64[ns](1),?float64(7),?int64(1),?object(8)
memory?usage:?132.9+?KB
數(shù)據(jù)可視化
products_type_index?=?df["商品類型"].value_counts().index.tolist()
products_type_values?=?df["商品類型"].value_counts().values.tolist()
然后再調(diào)用Pyecharts()模塊中的Pie()實(shí)例進(jìn)行圖表的繪制
def?pie_chart_2():
????
????c?=?(
????????Pie(init_opts=opts.InitOpts(chart_id=4,?bg_color='#1C1C1C',
????????????????????????????????????theme=ThemeType.INFOGRAPHIC))
????????.add("",?[list(z)?for?z?in?zip(products_type_index,
???????????????????????????????????????products_type_values)])
????????.set_global_opts(title_opts=opts.TitleOpts(title="商品類型分布圖",
???????????????????????????????????????????????????title_textstyle_opts=opts.TextStyleOpts(font_size=25,?color='#FFFFFF')),
?????????????????????????legend_opts=opts.LegendOpts(orient="vertical",
?????????????????????????????????????????????????????pos_left="5%",
?????????????????????????????????????????????????????pos_top="10%"))
????????.set_series_opts(label_opts=opts.LabelOpts(formatter=":?{c}"))
????)
????return?c
????
if?__name__?==?"__main__":
????map?=?map_chart()
????map.render("4.html")
output

Pyecharts()模塊當(dāng)中的Grid()實(shí)例,將若干張繪制完成的圖表遵從一定的順序來(lái)進(jìn)行組合grid?=?(
????????Grid(init_opts=opts.InitOpts(width='1000px',?height='600px',
?????????????????????????????????????chart_id=3,?bg_color='#1C1C1C'))
????????.add(c_1,?grid_opts=opts.GridOpts(pos_left="60%"))
????????.add(c_2,?grid_opts=opts.GridOpts(pos_right="50%"))
????)
地圖
同樣地,我們將不同省份的數(shù)據(jù)給篩選出來(lái)之后,然后進(jìn)行圖表的繪制
city_index?=?df["省份"].value_counts().index.tolist()
city_values?=?df["省份"].value_counts().values.tolist()
Pyecharts模塊當(dāng)中的Map()實(shí)例,可以看到顧客幾乎都分布在北京、浙江以及上海這幾個(gè)地方def?map_chart():
????c?=?(
????????Map(init_opts=opts.InitOpts(chart_id=2,
????????????????????????????????????bg_color='#1C1C1C'))
????????????.add("商家A",?[list(z)?for?z?in?zip(city_index,
??????????????????????????????????????????????city_values)],?"china")
????????????.set_global_opts(
????????????title_opts=opts.TitleOpts(title="顧客在全國(guó)的分布圖",
??????????????????????????????????????title_textstyle_opts=opts.TextStyleOpts(font_size=25,
??????????????????????????????????????????????????????????????????????????????color='#FFFFFF')),
????????????visualmap_opts=opts.VisualMapOpts(max_=250),
????????)
????)
????return?c
????
if?__name__?==?"__main__":
????map?=?map_chart()
????map.render("2.html")
output

直方圖
我們針對(duì)的是購(gòu)買時(shí)間,看一下哪些購(gòu)買時(shí)間段的人會(huì)比較多
hour_index?=?df["小時(shí)"].value_counts().index.tolist()
hour_index_str?=?[str(hour_ind)?+?"時(shí)"?for?hour_ind?in?hour_index]
hour_values?=?df["小時(shí)"].value_counts().values.tolist()
調(diào)用Bar()實(shí)例進(jìn)行繪制圖表
def?bar_chart():
????c?=?(
????????Bar(init_opts=opts.InitOpts(chart_id=5,?bg_color='#1C1C1C',
????????????????????????????????????theme=ThemeType.CHALK))
????????????.add_xaxis(hour_index_str)
????????????.add_yaxis("商家A",?hour_values)
????????????.set_global_opts(title_opts=opts.TitleOpts(title="購(gòu)物的時(shí)間分布",
???????????????????????????????????????????????????????subtitle="購(gòu)物時(shí)間",
???????????????????????????????????????????????????????title_textstyle_opts=opts.TextStyleOpts(font_size=25,?color='#FFFFFF')))
????)
????return?c
????
if?__name__?==?"__main__":
????map?=?map_chart()
????map.render("5.html")
output

Pyecharts組合圖表
將繪制出來(lái)的若干份圖表組合到一塊兒,總共有這幾種方式
Grid: 并行/垂直放置多張圖 Page: 順序多圖 Tab: 多個(gè)頁(yè)面多圖 Timeline: 時(shí)間軸循環(huán)輪播多圖
我們使用的是Page()示例來(lái)順序展示多張圖表,先實(shí)例化該對(duì)象
page?=?Page(layout=Page.DraggablePageLayout,?page_title="基于Pyecharts的銷售數(shù)據(jù)大屏")
之所以用DraggablePageLayout屬性是為了調(diào)整成我們所想要的布局,然后將我們所繪制的圖表一一添加
page.add(
????title(),
????map_chart(),
????pie_chart(),
????pie_chart_2(),
????bar_chart(),
)
page.render('test_2.html')
最后生成一個(gè)test_2.html的文件,然后我們將布局調(diào)整成我們想要的結(jié)果


save config按鈕對(duì)布局文件進(jìn)行保存。之后本地會(huì)生成一個(gè)chart_config.json文件,然后運(yùn)行下面的代碼page.save_resize_html('test_2.html',?cfg_file='chart_config.json',?dest='可視化大屏.html')
打開(kāi)重新生成的可視化大屏.html,便是新的內(nèi)容

代碼下載
項(xiàng)目代碼已上傳,由于公眾號(hào)后臺(tái)配置的自動(dòng)回復(fù)規(guī)則超過(guò)限制,
所以大家加我微信:pythonbrief,然后回復(fù)「大屏」即可獲取。
掃碼即可加我微信
回復(fù):大屏?領(lǐng)取源碼
萬(wàn)水千山總是情,點(diǎn)個(gè)????行不行。
--END--
如何找到我:
近期優(yōu)質(zhì)文章:
學(xué)習(xí)更多: 整理了我開(kāi)始分享學(xué)習(xí)筆記到現(xiàn)在超過(guò)250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲(chóng)、機(jī)器學(xué)習(xí)等方面,別再說(shuō)不知道該從哪開(kāi)始,實(shí)戰(zhàn)哪里找了 “點(diǎn)贊”就是對(duì)博主最大的支持?
評(píng)論
圖片
表情


