1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 5110字,需瀏覽 11分鐘

         ·

        2021-11-29 15:36

        ??????關(guān)注我,和老表一起學(xué)Python、云服務(wù)器

        有粉絲提到說是不是可以寫一篇用Pyecharts模塊做可視化大屏的相關(guān)教程,小編立馬就答應(yīng)了他的請求。那么今天我們就來說說如何用Pyecharts模塊來制作炫酷的可視化大屏,最后的效果如下

        步驟如下:
        • 分別使用Pyecharts制作各類圖表,包括柱狀圖、地圖、餅圖等等
        • 使用Pyecharts當(dāng)中的組合圖表功能,將所有圖片拼接在一張html文件中進(jìn)行展示

        數(shù)據(jù)的來源

        這次我們使用的數(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???訂單編號????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ì)員,性別有男性與女性,剩下的還有包括商品類型、購買時(shí)間、支付方式、各個(gè)商品的毛利率等數(shù)據(jù),

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

        接下來我們開始各個(gè)圖表的繪制,我們先來看餅圖的繪制,代碼并不復(fù)雜,首先我們對“商品類型”這一列的數(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í)例,將若干張繪制完成的圖表遵從一定的順序來進(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ù)給篩選出來之后,然后進(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="顧客在全國的分布圖",
        ??????????????????????????????????????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

        直方圖

        我們針對的是購買時(shí)間,看一下哪些購買時(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="購物的時(shí)間分布",
        ???????????????????????????????????????????????????????subtitle="購物時(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組合圖表

        將繪制出來的若干份圖表組合到一塊兒,總共有這幾種方式

        • Grid: 并行/垂直放置多張圖
        • Page: 順序多圖
        • Tab: 多個(gè)頁面多圖
        • Timeline: 時(shí)間軸循環(huán)輪播多圖

        我們使用的是Page()示例來順序展示多張圖表,先實(shí)例化該對象

        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é)果

        對圖片布局完成之后,要記得點(diǎn)擊左上角的save config按鈕對布局文件進(jìn)行保存。之后本地會(huì)生成一個(gè)chart_config.json文件,然后運(yùn)行下面的代碼
        page.save_resize_html('test_2.html',?cfg_file='chart_config.json',?dest='可視化大屏.html')

        打開重新生成的可視化大屏.html,便是新的內(nèi)容

        代碼下載

        項(xiàng)目代碼已上傳,由于公眾號后臺(tái)配置的自動(dòng)回復(fù)規(guī)則超過限制,

        所以大家加我微信:pythonbrief,然后回復(fù)「大屏」即可獲取。


        掃碼即可加我微信

        回復(fù):大屏?領(lǐng)取源碼



        萬水千山總是情,點(diǎn)個(gè)????行不行


        --END--

        如何找到我:

        近期優(yōu)質(zhì)文章:

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

        10行代碼!

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

        學(xué)習(xí)更多:
        整理了我開始分享學(xué)習(xí)筆記到現(xiàn)在超過250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲、機(jī)器學(xué)習(xí)等方面,別再說不知道該從哪開始,實(shí)戰(zhàn)哪里找了
        點(diǎn)贊”就是對博主最大的支持?
        瀏覽 85
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            一边摸一边叫床一边爽漫画 | 77174.cc国产成人区 | 久久精品苍井空免费一区二 | 91人妻无码精品一区二区 | 欧美成人在线第一页 | A V视频在线观看 | 把高贵美妇调教成玩物的视频 | 男的操女的视频 | 麻豆久久久久久 | 爱爱小视频网址 |