<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制作可視化大屏全流程!

          共 4118字,需瀏覽 9分鐘

           ·

          2021-11-13 18:36

          bd1b08563a9b2daab56fcd201fd1a13b.webp


          文 | 酷頭

          來源:印象python「ID: python_logic」


          嗨!大家好,我是酷頭
          歡迎來到學(xué)習(xí)python的寶藏基地~~~
          c82fa0f68149f231eb218ab00fb280b9.webp
          長按下方二維碼可以添加我為好友哦

          22c2d4112a39c0c022845bfe8064da5a.webp


          前兩天發(fā)了一篇《用Python制作可視化大屏,特簡單!》,留言區(qū)非常火爆,發(fā)現(xiàn)大家都對可視化部分非常感興趣。

          bd44e478cbc9e045e00d505e550cee06.webp

          而恰好大屏可視化這一部分又沒太細講,今天就詳細講一下Pyecharts制作可視化大屏。

          注意,本文由于篇幅問題不會放置全部代碼,會在文末提供全部代碼的下載。

          6f6c946909c54111e7b93b6d48a47636.webp

          承接上文《用Python制作可視化大屏,特簡單!》,不再贅述數(shù)據(jù)爬取和數(shù)據(jù)預(yù)處理。

          ECharts是由百度開源的基于JS的商業(yè)級數(shù)據(jù)圖表庫,有很多現(xiàn)成的圖表類型和實例,而Pyecharts則是為了方便我們使用Python實現(xiàn)ECharts的繪圖。使用Pyecharts制作可視化大屏,可以分為兩步:

          1、使用分別Pyecharts分別制作各類圖形;

          2、使用Pyecharts中的組合圖表功能,將所有圖片拼接在一張html文件中進行展示。

          小五認為影響大屏美觀最重要的兩個因素就是:配色布局!在本文中,會特意強調(diào)這兩點。

          Pyecharts可視化

          本文縮減了圖表,只選用2020東京奧運會各國金牌分布圖、2020東京奧運會獎牌榜詳情、2020東京奧運會中國各項目獲獎詳情。

          這類圖表都很簡單,參照官方文檔直接復(fù)制示例就可以學(xué)習(xí)。圖表配色都使用的Pyecharts默認顏色,大家實際使用時盡量形成自己的風(fēng)格。

          Map世界地圖

          Pyecharts繪制世界地圖時,名稱必須是英文。所以我們在前文中引入了國家名稱中英文對照表,左連接形成了df4

          e331fa34e186cdf45fd4f9520cf4607c.webpdf4

          單獨提取英文名稱和獎牌總數(shù)兩列數(shù)據(jù),用來可視化。

          data_list=[[i,j]?for?i,j?in?zip(df4['英文名稱'],df4['獎牌總數(shù)'])]
          data_list[:5]
          84a14d989b034ff768ef7c185368962b.webp

          數(shù)據(jù)準備好了,開始利用pyecharts繪制世界地圖。

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Map

          c?=?(
          ????Map()
          ????.add("",?data_list,?"world",
          ??????????is_map_symbol_show=False,
          ????)
          ????.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
          ????.set_global_opts(
          ????????title_opts=opts.TitleOpts(title="2020東京奧運會各國金牌分布圖"),
          ????????visualmap_opts=opts.VisualMapOpts(max_=100)
          ????)
          )

          c.render_notebook()

          非常簡單

          7e2d6ffeb674323b331ba255e7e498d5.webp

          同理,依次繪制其他兩類圖形。

          柱狀圖、餅圖

          柱狀圖(Bar)

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Bar

          c?=?(
          ????Bar()
          ????.add_xaxis(df4['名稱'].head(25).tolist())
          ????.add_yaxis("金牌",?df4['金牌'].head(25).tolist(),?stack="stack1")
          ????.add_yaxis("銀牌",?df4['銀牌'].head(25).tolist(),?stack="stack1")
          ????.add_yaxis("銅牌",?df4['銅牌'].head(25).tolist(),?stack="stack1")
          ????.set_series_opts(label_opts=opts.LabelOpts(is_show=True,?position="inside",?font_size=12,?color='#FFFFFF'))
          ????.set_global_opts(title_opts=opts.TitleOpts(title="2020東京奧運會獎牌榜詳情"),
          ?????????????????????xaxis_opts=opts.AxisOpts(type_='category',
          ??????????????????????????????????????????????axislabel_opts=opts.LabelOpts(
          ??????????????????????????????????????????????????rotate=45),
          ??????????????????????????????????????????????)))
          c.render_notebook()
          9b914b069f71799d686cd05ff9cebc00.webp2020東京奧運會獎牌榜詳情

          餅圖(Pie)

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Pie

          c?=?(
          ????Pie()
          ????.add("",?[['跳水',?12],?['射擊',?11],?['舉重',?8],?['競技體操',?8],?['乒乓球',?7],?['游泳',?6],?['羽毛球',?6],?['田徑',?5],?['靜水皮劃艇',?3],?['蹦床體操',?3],?['自由式摔跤',?3],?['賽艇',?3],?['空手道',?2],?['拳擊',?2],?['帆船',?2],?['花樣游泳',?2],?['跆拳道',?1],?['場地自行車賽',?1],?['古典式摔跤',?1],?['擊劍',?1],?['三人籃球',?1]],
          ?????????center=["50%",?"60%"],)
          ????.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:?{c}"))
          )
          c.render_notebook()
          9d9335410102368af7acf1a870a925fd.webp2020東京奧運會中國各項目獲獎詳情

          這樣需要用到的三張圖表就繪制好了。

          Pyecharts組合圖表

          Pyecharts進行可視化大屏第二步就是組合圖表,大致可分為四類:

          • Grid:并行多圖
          • Page:順序多圖
          • Tab:選項卡多圖
          • Timeline:時間線輪播多圖

          官方文檔:https://pyecharts.org/#/zh-cn/composite_charts

          這里用Page(順序多圖)居多,在組合圖表之前,還要先把前面的圖表繪制代碼改為函數(shù)。

          def?map_world()?->?Map:
          ????c?=?(
          ????????Map(init_opts=opts.InitOpts(chart_id=2,?bg_color='#ADD8E6'))
          ????????.add("",?data_list,?"world",
          ?????????????is_map_symbol_show=False,
          ?????????????)
          ????????.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
          ????????.set_global_opts(
          ????????????title_opts=opts.TitleOpts(title="2020東京奧運會各國金牌分布圖"),
          ????????????visualmap_opts=opts.VisualMapOpts(max_=100)
          ????????)
          ????)
          ????return?c

          順便還在其中增加了背景顏色bg_color、圖表IDchart_id,后者用于多圖表時定位區(qū)分。背景顏色的話,我選擇了淡藍色#ADD8E6。后續(xù)圖片的布局是根據(jù)圖表ID的對應(yīng)關(guān)系進行布局,所以每張圖都要分別設(shè)置其id。

          45be1ca8e66124c812763b4308ced676.webp

          接著使用page = Page(layout= Page.DraggablePageLayout)模式對圖片進行展示,這一步是為了調(diào)整布局。

          page?=?Page(layout=Page.DraggablePageLayout,?page_title="2020東京奧運會獎牌榜")

          #?在頁面中添加圖表
          page.add(
          ????title(),
          ????map_world(),
          ????bar_medals(),
          ????pie_china(),)

          page.render('test.html')

          調(diào)用繪制函數(shù)后生成一個 test.html 文件。

          打開后可以其中的圖片進行拖拽,來實現(xiàn)自定義布局。

          783d0c8b1adace08b140f5a22ecc4186.webp

          對圖片布局完畢后,要記得點擊左上角“save config”對布局文件進行保存。

          點擊后,本地會生成一個chart_config.json的文件,這其中包含了每個圖表ID對應(yīng)的布局位置。

          2ee245bd16e85a672e3672a741e28866.webp

          最后,調(diào)用保存好的布局文件,重新生成html。

          運行下面這行代碼。

          page.save_resize_html('test.html',?cfg_file='chart_config.json',?dest='奧運.html')

          其中test.html 為生成的所有圖表的文件、chart_config.json 為下載的布局文件、奧運.html 為布局好的的儀表盤文件、打開儀表奧運.html:

          6f6c946909c54111e7b93b6d48a47636.webp

          這樣就實現(xiàn)了一次數(shù)據(jù)可視化——大屏展示。

          但還有還有很多不足之處,比如若圖表配色沒有特殊去做調(diào)整。

          整張大屏只是一個靜態(tài)的展示,而非具有商業(yè)場景的數(shù)據(jù)儀表盤。

          c0f7e439dc1652493fbc075419052ae1.webp

          真正的數(shù)據(jù)大屏往往更喜歡用BI軟件生成,能夠?qū)崿F(xiàn)圖、表、切片器之間交叉篩選,希望以后有機會能用Python使用制作出來。


          往期精彩回顧?PScrapy爬取B站666張小姐姐美照并存入Mysql和Excel答應(yīng)我以后不要再用print打印了,冰淇淋來了!讓人無法拒絕的pandas技巧,簡單卻好用到爆!S實戰(zhàn)| 全國鴻星爾克門店分布圖,你的城市是最多的那個嗎?我用Python爬取了B站3948評論,圍觀最近超火的“殺瘋了!這就是國家隊的美貌嗎?”評論區(qū)



          9bbb8f61d892c5e51a747e7b58a23c66.webp

          分享

          39a8c644b90d1ab3cb6cecf6fd910a9d.webp

          收藏

          ff48ed8862eeae96c72298cac5c9f740.webp

          點贊

          9cdc5a9becbf9254bb3eda5324afddbc.webp

          在看

          瀏覽 98
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  亚洲视频日韩精彩动漫一区二区 | 无人区乱码1区2区3区在线 | 欧美精品一卡 | 全免费A级毛片免费视频播放 | 香蕉视频做爱的 |