【Python】太炫酷了,這里有一個(gè)用于制作數(shù)據(jù)面板大屏的Python模塊
Python當(dāng)中用于繪制圖表的模塊,相信大家用的最多的便是matplotlib和seabron,除此之外還有一些用于動(dòng)態(tài)交互的例如Plotly模塊和Pyecharts模塊,今天小編再為大家來推薦兩個(gè)用于制作可視化大屏的庫(kù),分別叫做hvPlot以及Panel,在本篇教程當(dāng)中,小編依次會(huì)為大家分享用 pandas以及hvPlot結(jié)合生成具有交互性的圖表用 Panel模塊生成小的組件,配合圖表進(jìn)行使用制作一個(gè)數(shù)據(jù)可視化大屏來更好地呈現(xiàn)數(shù)據(jù)
pandas+hvPlot繪制圖表
我們首先導(dǎo)入一些要用到的模塊以及用pandas來讀取數(shù)據(jù)集,代碼如下
#?To?handle?data
import?numpy?as?np
import?pandas?as?pd
#?To?make?visualizations
import?hvplot.pandas
import?panel?as?pn;?pn.extension()
from?panel.template?import?DarkTheme
pandas繪制出來的圖表默認(rèn)都是以matplotlib模塊為后端,因?yàn)椴痪邆浣换バ?,如下圖所示sales?=?pd.read_csv('games_sales.csv')
sales.plot(kind='line',?x='Year',?y='Units?sold(in?millions)',?color='orange',?grid=True,?title='Pokémon?Game?Sales');
output

kind參數(shù)對(duì)應(yīng)的是圖表的類型,X參數(shù)代表的是X軸上面的所要要用到的數(shù)據(jù),同理,我們還指定了標(biāo)題、圖表的顏色等等參數(shù),那么要是我們希望pandas在繪制圖表的時(shí)候是以hvPlot為后端,需要添加如下的代碼pd.options.plotting.backend?=?'holoviews'
我們同樣來繪制如上所示的圖表,代碼如下
sales.plot(kind='line',?x='Year',?y='Units?sold(in?millions)',?color='orange',?grid=True,?title='Pokémon?Game?Sales')
output

salesplot?=?sales.plot(kind='line',?x='Year',?y='Units?sold(in?millions)',
???????????????????????color='orange',?grid=True,?title='Pokémon?Game?Sales',
???????????????????????hover=False)?*?\
????????????????sales.plot(kind='scatter',?x='Year',?y='Units?sold(in?millions)',
???????????????????????????color='#c70000',?hover_cols='Game')
salesplot
output

*將兩者有效地結(jié)合到了一塊兒。制作一個(gè)小組件
在上一期小編寫過的教程
【干貨原創(chuàng)】介紹一個(gè)Python模塊,Seaborn繪制的圖表也能實(shí)現(xiàn)動(dòng)態(tài)交互
ipywidgets模塊來制作并且生成組件配合著可視化圖表來使用,這次我們用Panel模塊也來生成一個(gè)類似的組件,代碼如下pok_types?=?list(df.type_1.unique())
pok_type?=?pn.widgets.Select(name='Type',?options=pok_types)
pok_type
output

我們結(jié)合該組件來繪制圖表,代碼如下
viz0?=?data_pipeline[['pokedex_number',?'name',
??????????????????????'total_points']].hvplot(kind='table',title='Pokémons',
??????????????????????????????????????????????width=400,?height=400)
viz0
output

kind來調(diào)整要繪制的圖表的類型,width以及height參數(shù)來調(diào)整圖表的大小,title參數(shù)來調(diào)整圖表的標(biāo)題,我們來繪制一張散點(diǎn)圖,代碼如下viz1?=?data_pipeline.hvplot(x='weight_kg',?y='height_m',?
?????????????????????by='type_2',?kind='scatter',?
?????????????????????hover_cols=['name',?'type_1',?'type_2'],
?????????????????????width=600,?height=400,grid=True,
?????????????????????title='Relationship?between?Weight?(kg)?and?Height?(m),?by?Type'
????????????????????)
viz1
output

另外我們也可以同樣來繪制一張柱狀圖,代碼如下
data_damage?=?data_pipeline.iloc[:,?-18:].mean().rename('Damage')
viz2?=?data_damage.hvplot(kind='bar',c='Damage',?
???????????????title='正在思考要取什么標(biāo)題會(huì)比較好......',?
???????????????rot=30,?shared_axes=False,
???????????????colorbar=True,?colormap='RdYlGn_r',?
???????????????)
viz2
output

制作一個(gè)數(shù)據(jù)面板大屏
template?=?pn.template.FastListTemplate(theme=DarkTheme,
????title?=?'數(shù)據(jù)面板',
????sidebar=[
????????pn.pane.Markdown('#?關(guān)于這個(gè)項(xiàng)目'),
????????pn.pane.Markdown('####?這個(gè)項(xiàng)目的數(shù)據(jù)來源是[Kaggle](https://www.kaggle.com/datasets/mariotormo/complete-pokemon-dataset-updated-090420)?and?on?[Wikipedia](https://en.wikipedia.org/wiki/Pok%C3%A9mon_(video_game_series)#Reception)?about?Pokémons?to?explore?different?types?of?visualizations?using?HoloViz?tools:?[Panel](https://panel.holoviz.org/)?[hvPlot](https://hvplot.holoviz.org/)'),
????????pn.pane.JPG('圖片的路徑.jpg',?sizing_mode='scale_both'),
????????pn.pane.Markdown('[圖片的來源](https://unsplash.com/photos/dip9IIwUK6w)'),
????????pn.pane.Markdown('##?Filter?by?Type'),
????????pok_type
????],
????main=[pn.Row(
??????????????????pn.Column(viz0.panel(width=600,?height=400,?margin=(0,20))),?
??????????????????pn.Column(pn.Row(viz1.panel(width=700,?height=250,?margin=(0,20))),
????????????????????????????pn.Column(viz2.panel(width=700,?height=250),?margin=(0,20))),
?????????????????),
??????????pn.Row(salesplot.opts(width=1400,?height=200))
????],
????accent_base_color='#d78929',
????header_background='#d78929',
????sidebar_footer='
GitHub鏈接',?
????main_max_width='100%'????????????????????????????????????????
)
template.servable();
template.show()
output
Launching?server?at?http://localhost:63968

往期精彩回顧
適合初學(xué)者入門人工智能的路線及資料下載 (圖文+視頻)機(jī)器學(xué)習(xí)入門系列下載 中國(guó)大學(xué)慕課《機(jī)器學(xué)習(xí)》(黃海廣主講) 機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印 《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 機(jī)器學(xué)習(xí)交流qq群955171419,加入微信群請(qǐng)掃碼:
