20個精美圖表,教你玩轉(zhuǎn)Pyecharts可視化
再繼上一篇Pyecharts相關(guān)的教程內(nèi)容之后,本篇文章我們將繼續(xù)聚焦Pyecharts模塊并且用它來繪制精美的圖表,希望讀者在看完之后會有不少收獲。
內(nèi)接一個環(huán)狀的餅圖,里面還有一個餅狀的圖
(Pie().add(series_name="訪問來源",data_pair=[list(z) for z in zip(Faker.choose(), Faker.values())],radius=[0, "30%"],label_opts=opts.LabelOpts(position="inner"),).add(series_name="訪問來源",radius=["40%", "55%"],data_pair=[list(z) for z in zip(Faker.choose(), Faker.values())],).set_global_opts(legend_opts=opts.LegendOpts(pos_left="15%", orient="vertical", pos_top="10%")).set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a}
{b}: {c} (go7utgvlrp%)")).render("nested_pies.html"))

c = (Pie().add("",[list(z) for z in zip(Faker.choose(), Faker.values())],radius=["50%", "75%"],).set_global_opts(title_opts=opts.TitleOpts(title="Pie-radius示例"),legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).render("pie_radius_test.html"))

c = (Pie().add("",[list(z) for z in zip(Faker.choose(), Faker.values())],radius=["40%", "75%"],center=["35%", "50%"],rosetype="radius",label_opts=opts.LabelOpts(is_show=False),).set_global_opts(title_opts=opts.TitleOpts(title="餅圖-玫瑰圖示例")).render("pie_rosetype_test.html"))

c = (Pie().add("",[list(z) for z in zip(["古裝", "其他"], [35, 65])],center=["20%", "30%"],radius=[50, 80],label_opts=new_label_opts(),).add("",[list(z) for z in zip(["動作", "其他"], [24, 76])],center=["55%", "30%"],radius=[50, 80],label_opts=new_label_opts(),).add("",[list(z) for z in zip(["愛情", "其他"], [10, 90])],center=["20%", "70%"],radius=[50, 80],label_opts=new_label_opts(),).add("",[list(z) for z in zip(["驚悚", "其他"], [20, 80])],center=["55%", "70%"],radius=[50, 80],label_opts=new_label_opts(),).set_global_opts(title_opts=opts.TitleOpts(title="Pie-多餅圖基本示例"),legend_opts=opts.LegendOpts(type_="scroll", pos_top="30%", pos_left="70%", orient="vertical"),).render("mutiple_pie.html"))

雷達(dá)圖可以幫助我們查看各個維度之下的數(shù)據(jù)情況,例如
c = (Radar().add_schema(schema=[????????????opts.RadarIndicatorItem(name="A",?max_=8500),????????????opts.RadarIndicatorItem(name="B",?max_=15000),????????????opts.RadarIndicatorItem(name="C",?max_=35000),????????????opts.RadarIndicatorItem(name="D",?max_=38000),????????????opts.RadarIndicatorItem(name="E",?max_=55000),????????????opts.RadarIndicatorItem(name="F",?max_=25000),]).add("計劃設(shè)想", v1).add("實際情況", v2).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(legend_opts=opts.LegendOpts(),title_opts=opts.TitleOpts(title="雷達(dá)圖示例"),).render("radar_test.html"))

(Scatter()=Faker.choose()).add_yaxis(series_name="",y_axis=Faker.values(),symbol_size=30,label_opts=opts.LabelOpts(is_show=True),).set_series_opts().set_global_opts(yaxis_opts=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),),tooltip_opts=opts.TooltipOpts(is_show=True),).render("basic_scatter_chart.html"))

c = (Scatter().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values(), symbol_size=30,label_opts=opts.LabelOpts(is_show=True),).set_global_opts(title_opts=opts.TitleOpts(title="散點圖-顏色分段"),visualmap_opts=opts.VisualMapOpts(max_=150),).render("scatter_visualmap_color_test.html"))

或者我們根據(jù)數(shù)據(jù)的大小來改變散點的大小
c = (Scatter().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values()).add_yaxis("商家2", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="散點圖-點狀大小不同"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),).render("scatter_visualmap_size_test.html"))

c = (PictorialBar().add_xaxis(Faker.choose()).add_yaxis("",Faker.values(),label_opts=opts.LabelOpts(is_show=True),symbol_size=20,symbol_repeat="fixed",symbol_offset=[0, 0],is_symbol_clip=True,symbol=SymbolType.ROUND_RECT,).reversal_axis().set_global_opts(title_opts=opts.TitleOpts(title="象形柱狀圖示例"),xaxis_opts=opts.AxisOpts(is_show=True),yaxis_opts=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_show=True),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(opacity=0)),),).render("pictorialbar_test.html"))

c = (Kline().add_xaxis(["2021/5/{}".format(i + 1) for i in range(31)]).add_yaxis("K線圖", data).set_global_opts(xaxis_opts=opts.AxisOpts(is_scale=True),yaxis_opts=opts.AxisOpts(is_scale=True,splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),),datazoom_opts=[opts.DataZoomOpts()],title_opts=opts.TitleOpts(title="k線圖+時間軸示例"),).render("k線圖+時間軸_test.html"))

當(dāng)然這個時間軸既可以放在外面也可以放在里面
c = (Kline().add_xaxis(["2021/5/{}".format(i + 1) for i in range(31)]).add_yaxis("K線圖", data).set_global_opts(xaxis_opts=opts.AxisOpts(is_scale=True),yaxis_opts=opts.AxisOpts(is_scale=True,splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),),datazoom_opts=[opts.DataZoomOpts(type_="inside")],title_opts=opts.TitleOpts(title="K線圖+時間軸示例"),).render("K線圖+時間軸示例_inside.html"))

c = (Map().add("商家A", [list(z) for z in zip(["杭州市", "寧波市", "舟山市", "臺州市", "溫州市", "麗水市","金華市", "衢州市", "紹興市", "湖州市", "嘉興市"],Faker.values())], "浙江").set_global_opts(title_opts=opts.TitleOpts(title="Map浙江地圖-Test"), visualmap_opts=opts.VisualMapOpts()).render("map_zhejiang.html"))

c = (Geo().add_schema(maptype="浙江").add("geo",[list(z) for z in zip(["杭州市", "寧波市", "舟山市", "臺州市", "溫州市", "麗水市","金華市", "衢州市", "紹興市", "湖州市", "嘉興市"], Faker.values())],type_=ChartType.HEATMAP,).set_series_opts(label_opts=opts.LabelOpts(is_show=True)).set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-浙江地圖")).render("geo_zhejiang.html"))

c = (Map().add("商家1", [list(z) for z in zip(Faker.provinces, Faker.values())], "china").set_global_opts(title_opts=opts.TitleOpts(title="地圖 + 顏色分段(連續(xù)型)"),visualmap_opts=opts.VisualMapOpts(max_=150),).render("map_visual_test.html"))

c = (Map().add("商家1", [list(z) for z in zip(Faker.country, Faker.values())], "world").set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="Pyecharts-世界地圖"),visualmap_opts=opts.VisualMapOpts(max_=200),).render("map_world_test.html"))

地圖+漣漪散點圖的示例
c = (Geo().add_schema(maptype="china").add("geo",[list(z) for z in zip(Faker.provinces, Faker.values())],type_=ChartType.EFFECT_SCATTER,).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="地圖+漣漪散點圖示例")).render("geo_effectscatter_test.html"))

c = (Geo().add_schema(maptype="china",itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"),).add("",[],type_=ChartType.EFFECT_SCATTER,color="white",).add("geo",[],type_=ChartType.LINES,effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color="blue"),linestyle_opts=opts.LineStyleOpts(curve=0.2),).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="Geo-Lines-background")).render("geo_lines_background_test.html"))

nodes = [opts.GraphNode(name="結(jié)點A", symbol_size=10),opts.GraphNode(name="結(jié)點B", symbol_size=30),opts.GraphNode(name="結(jié)點C", symbol_size=20),opts.GraphNode(name="結(jié)點D", symbol_size=50),opts.GraphNode(name="結(jié)點E", symbol_size=70),]links = [opts.GraphLink(source="結(jié)點A", target="結(jié)點B"),opts.GraphLink(source="結(jié)點B", target="結(jié)點C"),opts.GraphLink(source="結(jié)點C", target="結(jié)點D"),opts.GraphLink(source="結(jié)點D", target="結(jié)點E"),opts.GraphLink(source="結(jié)點E", target="結(jié)點A"),]c = (Graph().add("", nodes, links, repulsion=2000).set_global_opts(title_opts=opts.TitleOpts(title="關(guān)系圖")).render("graph_test1.html"))

pyecharts還可以給圖表增添水印
c = (Bar(init_opts=opts.InitOpts(width='900px', height='600px')).add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title=""),graphic_opts=graphics_lst,))c.render("watermark.html")

我們可以在餅圖下面加一個時間軸,看一下隨著時間的變化,各個類目是怎么來變化的
attr = Faker.choose()tl = Timeline()for i in range(2015, 2022):pie = (Pie().add("商家A",[],center=["50%", "50%"], radius=["40%", "60%"],).set_global_opts(title_opts=opts.TitleOpts("某商店{}年營業(yè)額".format(i))))????tl.add(pie,?"{}年".format(i))tl.render("timeline_pie_test.html")

tl = Timeline()for i in range(2015, 2022):bar = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values(), label_opts=opts.LabelOpts(position="right")).add_yaxis("商家2", Faker.values(), label_opts=opts.LabelOpts(position="right")).reversal_axis().set_global_opts(title_opts=opts.TitleOpts("時間軸 + 橫向柱狀圖 (時間: {} 年)".format(i))))tl.add(bar, "{}年".format(i))tl.render("timeline_bar_reversal_test.html")

tl?=?Timeline()for i in range(2015, 2022):map0 = (Map().add("商家1", [list(z) for z in zip(Faker.provinces, Faker.values())], "china").set_global_opts(title_opts=opts.TitleOpts(title="{}年數(shù)據(jù)".format(i)),visualmap_opts=opts.VisualMapOpts(max_=200),))tl.add(map0, "{}年".format(i))tl.render("timeline_map.html")

有時候我們需要將最大、最小值以及平均值標(biāo)識出來,于是乎
c = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values()).add_yaxis("商家2", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="直方圖 + 標(biāo)識特殊值(指定類型)")).set_series_opts(label_opts=opts.LabelOpts(is_show=False),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值"),opts.MarkPointItem(type_="average", name="平均值"),]),).render("bar_markpoint_test.html"))

c = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values(), category_gap="50%").set_series_opts(itemstyle_opts={"normal": {"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(0, 244, 255, 1)'}, {offset: 1,color: 'rgba(0, 77, 167, 1)'}], false)"""),"barBorderRadius": [50, 50, 50, 50],"shadowColor": "rgb(0, 160, 221)",}}).set_global_opts(title_opts=opts.TitleOpts(title="圓角直方圖-漸變圓柱示例")).render("bar_border_test.html"))

今天文章就到這里啦~希望通過本文你也可以畫出美美的可視化圖表,你還可以掃下方二維碼加入我的Python學(xué)習(xí)交流群,還可以獲取大屏可視化源碼,只需微信私聊我回復(fù):可視化。
我是老表,愛貓愛技術(shù)~
點贊+留言+轉(zhuǎn)發(fā),就是對我最大的支持啦~
掃碼即可加我微信
老表朋友圈經(jīng)常有贈書/紅包福利活動
學(xué)習(xí)更多: 整理了我開始分享學(xué)習(xí)筆記到現(xiàn)在超過250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲、機(jī)器學(xué)習(xí)等方面,別再說不知道該從哪開始,實戰(zhàn)哪里找了

評論
圖片
表情
