1 快速开始
import pyecharts
# 查看pyecharts版本
print(pyecharts.__version__)
1.1 绘制图表
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
# 也可以传入路径参数,如 bar.render("mycharts.html")
# bar.render()用于在本地生成html文件
# bar,render_notebook()只在notebook里生成图片
bar.render_notebook()
1.2 使用options配置项
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
#bar.render()
bar.render_notebook()
1.3 渲染图片
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot
# 使用 snapshot-selenium 渲染图片
from snapshot_selenium import snapshot
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
# 将网页保存成图片存在本地
make_snapshot(snapshot, bar.render(), "bar.png")
1.4 使用主题
from pyecharts.charts import Bar
from pyecharts import options as opts
# 内置主题类型可查看 pyecharts.globals.ThemeType
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
#bar.render()
bar.render_notebook()
2 图表类型
2.1 基本图表
2.1.1 漏斗图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Funnel, Page
funnel = Funnel()
funnel.add("商品", [list(z) for z in zip(Faker.choose(), Faker.values())])
funnel.set_global_opts(title_opts=opts.TitleOpts(title="漏斗图-基本示例"))
funnel.render_notebook()
# 标签内置
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Funnel, Page
funnel = Funnel()
funnel.add("商品", [list(z) for z in zip(Faker.choose(), Faker.values())],label_opts=opts.LabelOpts(position="inside"))
funnel.set_global_opts(title_opts=opts.TitleOpts(title="漏斗图(标签内置)"))
funnel.render_notebook()
# 倒置
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Funnel, Page
funnel = Funnel()
funnel.add("商品", [list(z) for z in zip(Faker.choose(), Faker.values())],sort_="ascending",label_opts=opts.LabelOpts(position="inside"))
funnel.set_global_opts(title_opts=opts.TitleOpts(title="漏斗图(倒置)"))
funnel.render_notebook()
2.1.2 仪表盘
from pyecharts import options as opts
from pyecharts.charts import Gauge, Page
base_gauge = Gauge()
base_gauge.add("", [("完成率", 66.6)])
base_gauge.render_notebook()
from pyecharts import options as opts
from pyecharts.charts import Gauge, Page
base_gauge = Gauge()
base_gauge.add("业务指标",[("完成率", 55.5)],axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30)))
base_gauge.set_global_opts(title_opts=opts.TitleOpts(title="Gauge-不同颜色"),legend_opts=opts.LegendOpts(is_show=False))
base_gauge.render_notebook()
2.1.3 水球图
from pyecharts import options as opts
from pyecharts.charts import Liquid, Page
liquid_base = Liquid()
liquid_base.add('lq',[0.6,0.7])
liquid_base.set_global_opts(title_opts=opts.TitleOpts(title="水球图-基本示例"))
liquid_base.render_notebook()
2.1.4 饼图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Pie
base_pie = Pie()
base_pie.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
base_pie.set_global_opts(title_opts=opts.TitleOpts(title="饼图-基本示例"))
base_pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}"))
base_pie.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Pie
base_pie = Pie()
base_pie.add("", [list(z) for z in zip(Faker.choose(), Faker.values())],radius=["40%","75"])
base_pie.set_global_opts(title_opts=opts.TitleOpts(title="饼图-圆环图")
,legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"))
base_pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}"))
base_pie.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Pie
rose_pie = Pie()
rose_pie.add(
"",
[list(z) for z in zip(Faker.choose(), Faker.values())],
radius=["30%", "75%"],
center=["25%", "50%"],
rosetype="radius",
label_opts=opts.LabelOpts(is_show=False),
)
rose_pie.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Pie
rose_pie = Pie()
rose_pie.add(
"",
[list(z) for z in zip(Faker.choose(), Faker.values())],
radius=["30%", "75%"],
center=["25%", "50%"],
rosetype="area",
)
rose_pie.set_global_opts(title_opts=opts.TitleOpts(title="玫瑰图示例"))
rose_pie.render_notebook()
2.1.5 雷达图
from pyecharts import options as opts
from pyecharts.charts import Radar
v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]
base_radar = Radar()
base_radar.add_schema(schema=[
opts.RadarIndicatorItem(name="销售", max_=6500),
opts.RadarIndicatorItem(name="管理", max_=16000),
opts.RadarIndicatorItem(name="信息技术", max_=30000),
opts.RadarIndicatorItem(name="客服", max_=38000),
opts.RadarIndicatorItem(name="研发", max_=52000),
opts.RadarIndicatorItem(name="市场", max_=25000),
])
base_radar.add("预算分配",v1,color="#f9713c")
base_radar.add("实际开销",v2,color="#b3e4a1")
base_radar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
base_radar.set_global_opts(title_opts=opts.TitleOpts(title="雷达图-基本示例"))
base_radar.render_notebook()
2.1.6 主题河流图
from pyecharts import options as opts
from pyecharts.charts import Page, ThemeRiver
data = [
["2015/11/08", 10, "DQ"],
["2015/11/09", 15, "DQ"],
["2015/11/10", 35, "DQ"],
["2015/11/14", 7, "DQ"],
["2015/11/15", 2, "DQ"],
["2015/11/16", 17, "DQ"],
["2015/11/17", 33, "DQ"],
["2015/11/18", 40, "DQ"],
["2015/11/19", 32, "DQ"],
["2015/11/20", 26, "DQ"],
["2015/11/08", 35, "TY"],
["2015/11/09", 36, "TY"],
["2015/11/10", 37, "TY"],
["2015/11/11", 22, "TY"],
["2015/11/12", 24, "TY"],
["2015/11/13", 26, "TY"],
["2015/11/14", 34, "TY"],
["2015/11/15", 21, "TY"],
["2015/11/16", 18, "TY"],
["2015/11/17", 45, "TY"],
["2015/11/18", 32, "TY"],
["2015/11/19", 35, "TY"],
["2015/11/20", 30, "TY"],
["2015/11/08", 21, "SS"],
["2015/11/09", 25, "SS"],
["2015/11/10", 27, "SS"],
["2015/11/11", 23, "SS"],
["2015/11/12", 24, "SS"],
["2015/11/13", 21, "SS"],
["2015/11/14", 35, "SS"],
["2015/11/15", 39, "SS"],
["2015/11/16", 40, "SS"],
["2015/11/17", 36, "SS"],
["2015/11/18", 33, "SS"],
["2015/11/19", 43, "SS"],
["2015/11/20", 40, "SS"],
["2015/11/14", 7, "QG"],
["2015/11/15", 2, "QG"],
["2015/11/16", 17, "QG"],
["2015/11/17", 33, "QG"],
["2015/11/18", 40, "QG"],
["2015/11/19", 32, "QG"],
["2015/11/20", 26, "QG"],
["2015/11/21", 35, "QG"],
["2015/11/22", 40, "QG"],
["2015/11/23", 32, "QG"],
["2015/11/24", 26, "QG"],
["2015/11/25", 22, "QG"],
["2015/11/08", 10, "SY"],
["2015/11/09", 15, "SY"],
["2015/11/10", 35, "SY"],
["2015/11/11", 38, "SY"],
["2015/11/12", 22, "SY"],
["2015/11/13", 16, "SY"],
["2015/11/14", 7, "SY"],
["2015/11/15", 2, "SY"],
["2015/11/16", 17, "SY"],
["2015/11/17", 33, "SY"],
["2015/11/18", 40, "SY"],
["2015/11/19", 32, "SY"],
["2015/11/20", 26, "SY"],
["2015/11/21", 35, "SY"],
["2015/11/22", 4, "SY"],
["2015/11/23", 32, "SY"],
["2015/11/24", 26, "SY"],
["2015/11/25", 22, "SY"],
["2015/11/08", 10, "DD"],
["2015/11/09", 15, "DD"],
["2015/11/10", 35, "DD"],
["2015/11/11", 38, "DD"],
["2015/11/12", 22, "DD"],
["2015/11/13", 16, "DD"],
["2015/11/14", 7, "DD"],
["2015/11/15", 2, "DD"],
["2015/11/16", 17, "DD"],
["2015/11/17", 33, "DD"],
["2015/11/18", 4, "DD"],
["2015/11/19", 32, "DD"],
["2015/11/20", 26, "DD"],
]
theme_river = ThemeRiver()
theme_river.add(["DQ", "TY", "SS", "QG", "SY", "DD"],data,
singleaxis_opts=opts.SingleAxisOpts(type_="time", pos_bottom="10%"))
theme_river.set_global_opts(title_opts=opts.TitleOpts(title="主题河流图-基本示例"))
theme_river.render_notebook()
2.1.7 词云图
from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
words = [
("Sam S Club", 10000),
("Macys", 6181),
("Amy Schumer", 4386),
("Jurassic World", 4055),
("Charter Communications", 2467),
("Chick Fil A", 2244),
("Planet Fitness", 1868),
("Pitch Perfect", 1484),
("Express", 1112),
("Home", 865),
("Johnny Depp", 847),
("Lena Dunham", 582),
("Lewis Hamilton", 555),
("KXAN", 550),
("Mary Ellen Mark", 462),
("Farrah Abraham", 366),
("Rita Ora", 360),
("Serena Williams", 282),
("NCAA baseball tournament", 273),
("Point Break", 265),
]
base_wordcloud = WordCloud()
base_wordcloud.add("", words, word_size_range=[20, 100])
base_wordcloud.set_global_opts(title_opts=opts.TitleOpts(title="词云图-基本示例"))
base_wordcloud.render_notebook()
from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
words = [
("Sam S Club", 10000),
("Macys", 6181),
("Amy Schumer", 4386),
("Jurassic World", 4055),
("Charter Communications", 2467),
("Chick Fil A", 2244),
("Planet Fitness", 1868),
("Pitch Perfect", 1484),
("Express", 1112),
("Home", 865),
("Johnny Depp", 847),
("Lena Dunham", 582),
("Lewis Hamilton", 555),
("KXAN", 550),
("Mary Ellen Mark", 462),
("Farrah Abraham", 366),
("Rita Ora", 360),
("Serena Williams", 282),
("NCAA baseball tournament", 273),
("Point Break", 265),
]
base_wordcloud = WordCloud()
base_wordcloud.add("", words, word_size_range=[20, 100],shape=SymbolType.DIAMOND)
base_wordcloud.set_global_opts(title_opts=opts.TitleOpts(title="词云图-基本示例"))
base_wordcloud.render_notebook()
2.2 直角坐标系图表
2.2.1 柱状图/条形图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-基本示例",subtitle="此处是副标题"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values(),is_selected=False)
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-默认取消显示某Series",subtitle="此处是副标题"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-显示ToolBox",subtitle="此处是副标题"),
toolbox_opts=opts.ToolboxOpts(),
legend_opts=opts.LegendOpts(is_show=False))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values(),category_gap="40%")
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-单系列柱间距离"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-Y 轴 formatter"),
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}/月")))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-XY轴名称"),
xaxis_opts=opts.AxisOpts(name="此处是X轴"),
yaxis_opts=opts.AxisOpts(name="此处是Y轴"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.reversal_axis()
bar.set_series_opts(label_opts=opts.LabelOpts(position="right"))
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-翻转XY轴"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values(),stack="stack1")
bar.add_yaxis("商家B",Faker.values(),stack="stack1")
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
bar.set_global_opts(title_opts=opts.TitleOpts(title="堆叠柱状图"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values(),stack="stack1")
bar.add_yaxis("商家B",Faker.values(),stack="stack1")
bar.add_yaxis("商家C",Faker.values())
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
bar.set_global_opts(title_opts=opts.TitleOpts(title="(部分系列)堆叠柱状图"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.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="最小值")
]))
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-指定类型标记点"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
x,y = Faker.choose(),Faker.values()
bar.add_xaxis(x)
bar.add_yaxis("商家A",y,markpoint_opts=opts.MarkPointOpts(
data=[
opts.MarkPointItem(name="自定义标记点",coord=[x[2],y[2]],value=y[2])
]))
bar.add_yaxis("商家B",Faker.values())
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-指定类型标记点"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(
data=[
opts.MarkLineItem(type_="max",name="最大值"),
opts.MarkLineItem(type_="min",name="最小值")
]))
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-指定类型标记线"))
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.days_attrs)
bar.add_yaxis("商家A",Faker.days_values)
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-水平数据缩放"),
datazoom_opts=opts.DataZoomOpts())
bar.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(Faker.days_attrs)
bar.add_yaxis("商家A",Faker.days_values)
bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图-水平数据缩放"),
datazoom_opts=opts.DataZoomOpts(orient="vertical"))
bar.render_notebook()
from pyecharts import options as opts
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis([
"名字很长的X轴标签1",
"名字很长的X轴标签2",
"名字很长的X轴标签3",
"名字很长的X轴标签4",
"名字很长的X轴标签5",
"名字很长的X轴标签6",
])
bar.add_yaxis("商家A", [10, 20, 30, 40, 50, 40])
bar.add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
title_opts=opts.TitleOpts(title="柱状图-旋转x轴标签",subtitle="解决标签过长问题"))
bar.render_notebook()
2.2.2 箱型图
from pyecharts import options as opts
from pyecharts.charts import Boxplot
v1 = [
[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880]
+ [1000, 980, 930, 650, 760, 810, 1000, 1000, 960, 960],
[960, 940, 960, 940, 880, 800, 850, 880, 900]
+ [840, 830, 790, 810, 880, 880, 830, 800, 790, 760, 800],
]
v2 = [
[890, 810, 810, 820, 800, 770, 760, 740, 750, 760]
+ [910, 920, 890, 860, 880, 720, 840, 850, 850, 780],
[890, 840, 780, 810, 760, 810, 790, 810, 820, 850, 870]
+ [870, 810, 740, 810, 940, 950, 800, 810, 870],
]
box_plot = Boxplot()
box_plot.add_xaxis(["expr1", "expr2"])
box_plot.add_yaxis("A", box_plot.prepare_data(v1))
box_plot.add_yaxis("B", box_plot.prepare_data(v2))
box_plot.set_global_opts(title_opts=opts.TitleOpts(title="箱型图-基本示例"))
box_plot.render_notebook()
2.2.3 涟漪特效散点图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.globals import SymbolType
effect_scatter = EffectScatter()
effect_scatter.add_xaxis(Faker.choose())
effect_scatter.add_yaxis("",Faker.values())
effect_scatter.set_global_opts(title_opts=opts.TitleOpts(title="涟漪特效散点图-基本示例"))
effect_scatter.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.globals import SymbolType
effect_scatter = EffectScatter()
effect_scatter.add_xaxis(Faker.choose())
effect_scatter.add_yaxis("",Faker.values())
effect_scatter.set_global_opts(title_opts=opts.TitleOpts(title="涟漪特效散点图-显示网格线"),
xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)))
effect_scatter.render_notebook()
2.2.4 折线图/面积图
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Line
line_base = Line()
line_base.add_xaxis(Faker.choose())
line_base.add_yaxis("商家A",Faker.values())
line_base.add_yaxis("商家B",Faker.values())
line_base.set_global_opts(title_opts=opts.TitleOpts(title="折线图-基本示例"))
line_base.render_notebook()
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Line
line = Line()
y =Faker.values()
y[3],y[6]=None,None
line.add_xaxis(Faker.choose())
line.add_yaxis("商家A",y,is_connect_nones=True)
line.set_global_opts(title_opts=opts.TitleOpts(title="折线图-连接空值"))
line.render_notebook()
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Line
line_base = Line()
line_base.add_xaxis(Faker.choose())
line_base.add_yaxis("商家A",Faker.values(),is_smooth=True)
line_base.add_yaxis("商家B",Faker.values(),is_smooth=True)
line_base.set_global_opts(title_opts=opts.TitleOpts(title="折线图-平滑曲线"))
line_base.render_notebook()
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Line
line_base = Line()
line_base.add_xaxis(Faker.choose())
line_base.add_yaxis("商家A",Faker.values(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
line_base.add_yaxis("商家B",Faker.values(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
line_base.set_global_opts(title_opts=opts.TitleOpts(title="折线图-m面积图"))
line_base.render_notebook()
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Line
line_base = Line()
line_base.add_xaxis(Faker.choose())
line_base.add_yaxis("商家A",Faker.values(),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]))
line_base.add_yaxis("商家B",Faker.values(),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]))
line_base.set_global_opts(title_opts=opts.TitleOpts(title="折线图-标记点"))
line_base.render_notebook()
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Line
line_base = Line()
line_base.add_xaxis(Faker.choose())
line_base.add_yaxis("商家A",Faker.values(),markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
line_base.add_yaxis("商家B",Faker.values(),)
line_base.set_global_opts(title_opts=opts.TitleOpts(title="折线图-标记点"))
line_base.render_notebook()
2.2.5 散点图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Scatter
scatter = Scatter()
scatter.add_xaxis(Faker.choose())
scatter.add_yaxis("商家A",Faker.values())
scatter.set_global_opts(title_opts=opts.TitleOpts(title="散点图-基本示例"))
scatter.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Scatter
scatter = Scatter()
scatter.add_xaxis(Faker.choose())
scatter.add_yaxis("商家A",Faker.values())
scatter.set_global_opts(title_opts=opts.TitleOpts(title="散点图-显示网格线"),
xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)))
scatter.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Scatter
scatter = Scatter()
scatter.add_xaxis(Faker.choose())
scatter.add_yaxis("商家A",Faker.values())
scatter.set_global_opts(title_opts=opts.TitleOpts(title="散点图-VisualMap"),
visualmap_opts=opts.VisualMapOpts(max_=150))
scatter.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Scatter
scatter = Scatter()
scatter.add_xaxis(Faker.choose())
scatter.add_yaxis("商家A",Faker.values())
scatter.add_yaxis("商家B",Faker.values())
scatter.set_global_opts(title_opts=opts.TitleOpts(title="散点图-VisualMap"),
visualmap_opts=opts.VisualMapOpts(type_="size",max_=150,min_=20))
scatter.render_notebook()
2.3 地理图表
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
geo_base = Geo()
geo_base.add_schema(maptype="china")
geo_base.add("geo",[list(z) for z in zip(Faker.provinces,Faker.values())])
geo_base.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo_base.set_global_opts(title_opts=opts.TitleOpts(title="地理图表-基本示例"),
visualmap_opts=opts.VisualMapOpts())
geo_base.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
geo_base = Geo()
geo_base.add_schema(maptype="china")
geo_base.add("geo",[list(z) for z in zip(Faker.provinces,Faker.values())])
geo_base.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo_base.set_global_opts(title_opts=opts.TitleOpts(title="地理图表-Visual(分段型)"),
visualmap_opts=opts.VisualMapOpts(is_piecewise=True))
geo_base.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
geo_base = Geo()
geo_base.add_schema(maptype="china")
geo_base.add("geo",[list(z) for z in zip(Faker.provinces,Faker.values())],type_=ChartType.EFFECT_SCATTER)
geo_base.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo_base.set_global_opts(title_opts=opts.TitleOpts(title="地理图表-涟漪特效图"))
geo_base.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
geo_base = Geo()
geo_base.add_schema(maptype="china")
geo_base.add("geo",[list(z) for z in zip(Faker.provinces,Faker.values())],type_=ChartType.HEATMAP)
geo_base.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo_base.set_global_opts(title_opts=opts.TitleOpts(title="地理图表-基本示例"),
visualmap_opts=opts.VisualMapOpts())
geo_base.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
geo_base = Geo()
geo_base.add_schema(maptype="广东")
geo_base.add("geo",[list(z) for z in zip(Faker.guangdong_city,Faker.values())],type_=ChartType.HEATMAP)
geo_base.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo_base.set_global_opts(title_opts=opts.TitleOpts(title="地理图表-广东地图"),
visualmap_opts=opts.VisualMapOpts())
geo_base.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
geo_line = Geo()
geo_line.add_schema(maptype="china")
geo_line.add("",[("广州", 55), ("北京", 66), ("杭州", 77), ("重庆", 88)],
type_=ChartType.EFFECT_SCATTER,color="green")
geo_line.add( "geo",[("广州", "上海"), ("广州", "北京"), ("广州", "杭州"), ("广州", "重庆")],
type_=ChartType.LINES,
effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color="blue"),
linestyle_opts=opts.LineStyleOpts(curve=0.2))
geo_line.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo_line.set_global_opts(title_opts=opts.TitleOpts(title="地理图表-指示线"))
geo_line.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
geo_line = Geo()
geo_line.add_schema(maptype="china",itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"))
geo_line.add("",[("广州", 55), ("北京", 66), ("杭州", 77), ("重庆", 88)],
type_=ChartType.EFFECT_SCATTER,color="white")
geo_line.add( "geo",[("广州", "上海"), ("广州", "北京"), ("广州", "杭州"), ("广州", "重庆")],
type_=ChartType.LINES,
effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color="blue"),
linestyle_opts=opts.LineStyleOpts(curve=0.2))
geo_line.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo_line.set_global_opts(title_opts=opts.TitleOpts(title="地理图表-指示线-背景"))
geo_line.render_notebook()
2.4 组合图表
2.4.1 Grid:并行多图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line,Scatter
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.set_global_opts(title_opts=opts.TitleOpts(title="Grid_柱状图"))
line = Line()
line.add_xaxis(Faker.choose())
line.add_yaxis("商家A",Faker.values())
line.add_yaxis("商家B",Faker.values())
line.set_global_opts(title_opts=opts.TitleOpts(title="Grid_折线图",pos_top="48%"),
legend_opts=opts.LegendOpts(pos_top="48%"))
grid = Grid()
grid.add(bar,grid_opts=opts.GridOpts(pos_bottom="60%"))
grid.add(line,grid_opts=opts.GridOpts(pos_top="60%"))
grid.render_notebook()
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line,Scatter
scatter = Scatter()
scatter.add_xaxis(Faker.choose())
scatter.add_yaxis("商家A",Faker.values())
scatter.add_yaxis("商家B",Faker.values())
scatter.set_global_opts(title_opts=opts.TitleOpts(title="Grid_散点图"),
legend_opts=opts.LegendOpts(pos_left="20%"))
line = Line()
line.add_xaxis(Faker.choose())
line.add_yaxis("商家A",Faker.values())
line.add_yaxis("商家B",Faker.values())
line.set_global_opts(title_opts=opts.TitleOpts(title="Grid_折线图",pos_right="5%"),
legend_opts=opts.LegendOpts(pos_right="20%"))
grid = Grid()
grid.add(scatter,grid_opts=opts.GridOpts(pos_left="55%"))
grid.add(line,grid_opts=opts.GridOpts(pos_right="55%"))
grid.render_notebook()
2.4.2 Page:顺序多图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Page
bar = Bar()
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.set_global_opts(title_opts=opts.TitleOpts(title="Page-柱状图"))
line = Line()
line.add_xaxis(Faker.choose())
line.add_yaxis("商家A",Faker.values())
line.add_yaxis("商家B",Faker.values())
line.set_global_opts(title_opts=opts.TitleOpts(title="Page-折线图"))
page = Page()
page.add(bar,line)
page.render_notebook()
2.4.3 Tab:选项卡多图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Tab, Pie, Line
from pyecharts.components import Table
bar = Bar()
bar.add_xaxis(Faker.days_attrs)
bar.add_yaxis("商家A", Faker.days_values)
bar.set_global_opts(title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),
datazoom_opts=[opts.DataZoomOpts()])
line = Line()
line.add_xaxis(Faker.choose())
line.add_yaxis("商家A",Faker.values(),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]))
line.add_yaxis("商家B",Faker.values(),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]))
line.set_global_opts(title_opts=opts.TitleOpts(title="Line-MarkPoint"))
v = Faker.choose()
pie = Pie()
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),
)
pie.add("",
[list(z) for z in zip(v, Faker.values())],
radius=["30%", "75%"],
center=["75%", "50%"],
rosetype="area",
)
pie.set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例"))
table = Table()
headers = ["City name", "Area", "Population", "Annual Rainfall"]
rows = [
["Brisbane", 5905, 1857594, 1146.4],
["Adelaide", 1295, 1158259, 600.5],
["Darwin", 112, 120900, 1714.7],
["Hobart", 1357, 205556, 619.5],
["Sydney", 2058, 4336374, 1214.8],
["Melbourne", 1566, 3806092, 646.9],
["Perth", 5386, 1554769, 869.4],
]
table.add(headers, rows).set_global_opts(title_opts=opts.ComponentTitleOpts(title="Table"))
tab = Tab()
tab.add(bar, "柱状图")
tab.add(line, "折线图")
tab.add(pie, "玫瑰图")
tab.add(table, "表格")
tab.render_notebook()
2.4.4 Timeline:时间线轮播多图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Page, Pie, Timeline
x = Faker.choose()
tl = Timeline()
for i in range(2015, 2020):
bar = Bar()
bar.add_xaxis(x)
bar.add_yaxis("商家A", Faker.values())
bar.add_yaxis("商家B", Faker.values())
bar.set_global_opts(title_opts=opts.TitleOpts("某商店{}年营业额".format(i)))
tl.add(bar, "{}年".format(i))
tl.render_notebook()
2.5 HTML组件
2.5.1 表格
from pyecharts.components import Table
from pyecharts.options import ComponentTitleOpts
table = Table()
headers = ["City name", "Area", "Population", "Annual Rainfall"]
rows = [
["Brisbane", 5905, 1857594, 1146.4],
["Adelaide", 1295, 1158259, 600.5],
["Darwin", 112, 120900, 1714.7],
["Hobart", 1357, 205556, 619.5],
["Sydney", 2058, 4336374, 1214.8],
["Melbourne", 1566, 3806092, 646.9],
["Perth", 5386, 1554769, 869.4],
]
table.add(headers, rows)
table.set_global_opts(title_opts=ComponentTitleOpts(title="Table-我是主标题", subtitle="我是副标题支持换行哦"))
table.render()
2.5.2 图像
from pyecharts.components import Image
from pyecharts.options import ComponentTitleOpts
image = Image()
img_src = "https://user-images.githubusercontent.com/19553554/39612358-499eb2ae-4f91-11e8-8f56-179c4f0bf2df.png"
image.add(src=img_src,
style_opts={"width": "200px", "height": "200px", "style": "margin-top: 20px"},)
image.set_global_opts(
title_opts=ComponentTitleOpts(title="Image-基本示例", subtitle="我是副标题支持换行哦"))
image.render()
主题风格
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.globals import ThemeType
from pyecharts.faker import Faker
def theme_bar(theme_name):
bar = Bar(init_opts=opts.InitOpts(theme=theme_name))
bar.add_xaxis(Faker.choose())
bar.add_yaxis("商家A",Faker.values())
bar.add_yaxis("商家B",Faker.values())
bar.add_yaxis("商家C",Faker.values())
bar.add_yaxis("商家D",Faker.values())
bar.set_global_opts(title_opts=opts.TitleOpts(title=theme_name))
return bar.render_notebook()
# 默认主题WHITE
theme_bar(theme_name=ThemeType.WHITE)
# LIGHT
theme_bar(theme_name=ThemeType.LIGHT)
# DARK
theme_bar(theme_name=ThemeType.DARK)
# CHALK
theme_bar(theme_name=ThemeType.CHALK)
# ESSOS
theme_bar(theme_name=ThemeType.ESSOS)
# INFOGRAPHIC
theme_bar(theme_name=ThemeType.INFOGRAPHIC)
# MACARONS
theme_bar(theme_name=ThemeType.MACARONS)
# PURPLE_PASSION
theme_bar(theme_name=ThemeType.PURPLE_PASSION)
# ROMA
theme_bar(theme_name=ThemeType.ROMA)
# ROMANTIC
theme_bar(theme_name=ThemeType.ROMANTIC)
# SHINE
theme_bar(theme_name=ThemeType.SHINE)
# VINTAGE
theme_bar(theme_name=ThemeType.VINTAGE)
# WALDEN
theme_bar(theme_name=ThemeType.WALDEN)
# WESTEROS
theme_bar(theme_name=ThemeType.WESTEROS)
# WONDERLAND
theme_bar(theme_name=ThemeType.WONDERLAND)