<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【Python】太炫酷了,這里有一個(gè)用于制作數(shù)據(jù)面板大屏的Python模塊

          共 4091字,需瀏覽 9分鐘

           ·

          2022-05-11 05:24

          Python當(dāng)中用于繪制圖表的模塊,相信大家用的最多的便是matplotlibseabron,除此之外還有一些用于動(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

          通過最右側(cè)的工具欄,我們可以將繪制出來的圖表保存、放大/縮小、移動(dòng)等一系列操作。我們也可以同時(shí)將若干種圖表結(jié)合在一起,繪制在同一張圖上面
          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

          我們分別繪制了兩張圖表,散點(diǎn)圖以及折線圖,通過*將兩者有效地結(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

          我們可以通過當(dāng)中的參數(shù)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ù)面板大屏

          接下來我們將上面繪制的所有圖表,都放置在一張數(shù)據(jù)大屏當(dāng)中顯示,代碼如下

          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

          我們按照上述的鏈接來瀏覽器中打開,數(shù)據(jù)大屏面板就可以做好了,如下圖所示


          往期精彩回顧





          瀏覽 44
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色老板在线观看免费视频 | 99久热只有精品视频 | 一级黄色免费在线播放 | 樱桃香蕉午夜视频在线观看 | 青青草乱轮 |