<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>

          全文3000字,Pyecharts制作可視化大屏全流程! (附代碼分享)

          共 5110字,需瀏覽 11分鐘

           ·

          2021-11-29 15:36

          ??????關(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)源

          這次我們使用的數(shù)據(jù)是虛構(gòu)的某超市2021年第一季度的訂單數(shù)據(jù),總共是有1000條,
          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
          其中顧客的類型有普通顧客與會(huì)員,性別有男性與女性,剩下的還有包括商品類型、購(gòu)買時(shí)間、支付方式、各個(gè)商品的毛利率等數(shù)據(jù),

          數(shù)據(jù)可視化

          接下來(lái)我們開(kāi)始各個(gè)圖表的繪制,我們先來(lái)看餅圖的繪制,代碼并不復(fù)雜,首先我們對(duì)“商品類型”這一列的數(shù)據(jù)進(jìn)行統(tǒng)計(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

          另外,我們也看到了單張圖片當(dāng)中有兩張餅圖的情況,這是使用了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é)果

          對(duì)圖片布局完成之后,要記得點(diǎn)擊左上角的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ì)文章:

          Linux里的寶塔,真正的寶塔!詳細(xì)教程

          10行代碼!

          擁有一臺(tái)服務(wù)器后,我竟然這么酷?

          學(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ì)博主最大的支持?
          瀏覽 85
          點(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>
                  爱爱毛片| 操一操逼一逼 | 免费中文字幕免日本美中文字幕日免 | 暖暖av| 日韩人妻无码免费视频 |