利用Pyecharts繪制15個超實用精美圖表~
什么是pyecharts?pyecharts是Python與ECharts的結合,Python是我們所熟知的語言,而ECharts是百度開源的數據可視化圖表設計,這兩者的有效結合,使得圖表可視化更加絢麗多彩。
本文使用Python語言,借助pyecharts庫,繪制常用的柱形圖、折線圖、餅圖、散點圖等,使用pyecharts庫的交互功能實現動態(tài)可視化功能,對于里面的代碼都可以修改進行復用,下面一起學習。
條形圖
from pyecharts import options as optsfrom pyecharts.charts import Barfrom pyecharts.faker import Fakerc = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkLine(自定義)")).set_series_opts(label_opts=opts.LabelOpts(is_show=False),markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=50, name="yAxis=50")]),))c.render_notebook()

水平條形圖動圖
from pyecharts import options as optsfrom pyecharts.charts import Barfrom pyecharts.commons.utils import JsCodefrom pyecharts.faker import Fakerc = (Bar().add_xaxis(Faker.days_attrs).add_yaxis("商家A", Faker.days_values,itemstyle_opts=opts.ItemStyleOpts(color="#d14a61")).set_global_opts(title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),datazoom_opts=[opts.DataZoomOpts()],))c.render_notebook()

折線圖
from pyecharts.charts import Linefrom pyecharts import options as opts# 示例數據cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']data1 = [123, 153, 89, 107, 98, 23]data2 = [56, 77, 93, 68, 45, 67]line = (Line().add_xaxis(cate).add_yaxis('電商渠道', data1,markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")])).add_yaxis('門店', data2,is_smooth=True,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(name="自定義標記點",coord=[cate[2], data2[2]], value=data2[2])])).set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例", subtitle="我是副標題")))line.render_notebook()

面積圖
import pyecharts.options as optsfrom pyecharts.charts import Linefrom pyecharts.faker import Fakerc = (Line().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values(), areastyle_opts=opts.AreaStyleOpts(opacity=0.5)).add_yaxis("商家B", Faker.values(), areastyle_opts=opts.AreaStyleOpts(opacity=0.5)).set_global_opts(title_opts=opts.TitleOpts(title="Line-面積圖")))c.render_notebook()

餅圖
from?pyecharts.charts?import?Piefrom pyecharts import options as optscate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']data = [153, 124, 107, 99, 89, 46]pie = (Pie().add('', [list(z) for z in zip(cate, data)],radius=["30%", "75%"],rosetype="radius").set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例", subtitle="我是副標題")).set_series_opts(label_opts=opts.LabelOpts(formatter=": 13ixwwoc3%")))pie.render_notebook()

玫瑰圖
from pyecharts import options as optsfrom pyecharts.charts import Piefrom?pyecharts.faker?import?Fakerv = Faker.choose()c = (Pie().add("",[list(z) for z in zip(v, Faker.values())],radius=["30%", "75%"],center=["25%", "50%"],rosetype="radius",label_opts=opts.LabelOpts(is_show=False),).add("",[list(z) for z in zip(v, Faker.values())],radius=["30%", "75%"],center=["75%", "50%"],rosetype="area",).set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰圖示例")))c.render_notebook()

漏斗圖
import pyecharts.options as optsfrom pyecharts.charts import Funnelx_data = ["展現", "點擊", "訪問", "咨詢", "訂單"]y_data = [100, 80, 60, 40, 20]data = [[x_data[i], y_data[i]] for i in range(len(x_data))](Funnel().add(series_name="",sort_='ascending',data_pair=data,gap=2,tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a}
: {c}%"),label_opts=opts.LabelOpts(is_show=True, position="inside"),itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),).set_global_opts(title_opts=opts.TitleOpts(title="漏斗圖", subtitle="純屬虛構"))).render_notebook()

熱力圖
from pyecharts.charts import HeatMapfrom pyecharts import options as optsfrom pyecharts.faker import Fakerimport random# 示例數據data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]heat = (HeatMap().add_xaxis(Faker.clock).add_yaxis("訪客數",Faker.week,data,label_opts=opts.LabelOpts(is_show=True, position="inside")).set_global_opts(title_opts=opts.TitleOpts(title="HeatMap-基本示例", subtitle="我是副標題"),visualmap_opts=opts.VisualMapOpts(),legend_opts=opts.LegendOpts(is_show=False)))heat.render_notebook()

散點圖
from pyecharts import options as optsfrom pyecharts.charts import Scatterfrom pyecharts.faker import Fakerc = (Scatter().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Scatter-VisualMap(Size)"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),))c.render_notebook()

三維散點圖
from pyecharts import options as optsfrom pyecharts.charts import Scatter3Dimport randomdata = [[random.randint(0, 150), random.randint(0, 100), random.randint(0, 100)]for _ in range(1000)]scatter3D = (Scatter3D().add("", data).set_global_opts(title_opts=opts.TitleOpts("Scatter3D-基本示例"),visualmap_opts=opts.VisualMapOpts(range_color=Faker.visual_color)))scatter3D.render_notebook()

箱線圖
from pyecharts import options as optsfrom pyecharts.charts import Boxplotv1 = [[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880, 1000, 980],[960, 940, 960, 940, 880, 800, 850, 880, 900, 840, 830, 790],]v2 = [[890, 810, 810, 820, 800, 770, 760, 740, 750, 760, 910, 920],[890, 840, 780, 810, 760, 810, 790, 810, 820, 850, 870, 870],]c = Boxplot()c.add_xaxis(["expr1", "expr2"])c.add_yaxis("A", c.prepare_data(v1))c.add_yaxis("B", c.prepare_data(v2))c.set_global_opts(title_opts=opts.TitleOpts(title="BoxPlot-基本示例"))c.render_notebook()

地圖
from pyecharts import options as optsfrom pyecharts.charts import Mapimport randomprovince = ['廣東', '湖北', '湖南', '四川', '重慶', '黑龍江', '浙江', '山西', '河北', '安徽', '河南', '山東', '西藏']data = [(i, random.randint(50, 150)) for i in province]_map = (Map().add("銷售額", data, "china").set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"),legend_opts=opts.LegendOpts(is_show=False),visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),))_map.render_notebook()

區(qū)域熱力圖
from pyecharts import options as optsfrom pyecharts.charts import Geofrom pyecharts.globals import ChartTypeimport randomprovince = ['杭州', '寧波', '溫州', '嘉興', '麗水', '衢州', '紹興', '臺州', '湖州','金華','舟山']data = [(i, random.randint(50, 150)) for i in province]geo = (Geo().add_schema(maptype="浙江").add("門店數", data,type_=ChartType.HEATMAP).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(visualmap_opts=opts.VisualMapOpts(),legend_opts=opts.LegendOpts(is_show=False),title_opts=opts.TitleOpts(title="Geo-浙江熱力地圖")))geo.render_notebook()

世界地圖
from pyecharts.charts import Map # 注意這里與老版本pyecharts調用的區(qū)別from pyecharts import options as optsimport randomcountry = ['China', 'Canada', 'France', 'Japan', 'Russia', 'USA']data_world = [(i, random.randint(100, 200)) for i in country]world = (Map().add('', # 此處沒取名,所以空著data_world, # 數據'world') # 地圖類型.set_global_opts(title_opts=opts.TitleOpts(title='World Map'),visualmap_opts=opts.VisualMapOpts(max_=200,min_=100,is_piecewise=True) # 定義圖例為分段型,默認為連續(xù)的圖例)????.set_series_opts(label_opts=opts.LabelOpts(is_show=False)))world.render_notebook()

詞云圖
import pyecharts.options as optsfrom pyecharts.charts import WordClouddata = [("生活資源", "999"),("供熱管理", "888"),("供氣質量", "777"),("生活用水管理", "688"),("一次供水問題", "588"),("交通運輸", "516"),("城市交通", "515"),("環(huán)境保護", "683"),("房地產管理", "662"),("城鄉(xiāng)建設", "649"),("社會保障與福利", "429"),("社會保障", "707"),("文體與教育管理", "506"),("公共安全", "506"),("公交運輸管理", "586"),("出租車運營管理", "585"),](WordCloud().add(series_name="熱點分析", data_pair=data, word_size_range=[6, 66]).set_global_opts(title_opts=opts.TitleOpts(title="熱點分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)),tooltip_opts=opts.TooltipOpts(is_show=True),)).render_notebook()

組合圖
from pyecharts import options as optsfrom pyecharts.charts import Bar,Line,Gridfrom pyecharts.commons.utils import JsCodefrom pyecharts.faker import Fakerx_data = ["{}月".format(i) for i in range(1, 13)]bar = (Bar().add_xaxis(x_data).add_yaxis("蒸發(fā)量",4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],yaxis_index=0,color="#d14a61",).add_yaxis("降水量",5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],yaxis_index=1,color="#5793f3",).extend_axis(yaxis=opts.AxisOpts(name="蒸發(fā)量",type_="value",min_=0,max_=250,position="right",axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#d14a61")),axislabel_opts=opts.LabelOpts(formatter="{value} ml"),)).extend_axis(yaxis=opts.AxisOpts(type_="value",name="溫度",min_=0,max_=25,position="left",axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#675bba")),axislabel_opts=opts.LabelOpts(formatter="{value} °C"),splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)),)).set_global_opts(yaxis_opts=opts.AxisOpts(name="降水量",min_=0,max_=250,position="right",offset=50,axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#5793f3")),axislabel_opts=opts.LabelOpts(formatter="{value} ml"),),title_opts=opts.TitleOpts(title="Grid-多 Y 軸示例"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),))line = (Line().add_xaxis(x_data).add_yaxis("平均溫度",2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],yaxis_index=2,color="#675bba",label_opts=opts.LabelOpts(is_show=False),))bar.overlap(line)bar.render_notebook()



評論
圖片
表情
