PyEcharts说明文档
pyecharts快速开始
pyecharts
中可以绘制的图有很多,这里我们先来总体的了解一下他的使用风格,和调用的方式。
绘制条形图
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.render_notebook()
链式调用
pyecharts
中所有的方法都支持链式调用。
from pyecharts.charts import Bar
bar = (
Bar()
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
bar.render_notebook()
全局配置项
我们来看下全局配置项有哪些。在学习具体的配置项之前,先来看下pyecharts
生成的图由哪几个部分组成。
针对以上每个部分,都有相应的配置项来进行配置。所有的配置类,都是放到pyecharts.options
中。
InitOpts
:初始化配置项
可以配置诸如图像宽度,高度,图表主题,背景颜色等。
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from faker import Faker
c = (
Bar(
init_opts=opts.InitOpts(
width="500px",
height="400px",
theme=ThemeType.LIGHT,
bg_color="skyblue"
)
)
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
)
c.render_notebook()
TitleOpts
:标题配置项
配置图的标题和子标题等信息。
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(
title="销售表",
pos_right="0",
pos_bottom="2px",
title_textstyle_opts=opts.TextStyleOpts(**{"color":"#333","font_size":12})
))
)
c.render_notebook()
LegendOpts
:图例配置项
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(
legend_opts=opts.LegendOpts(selected_mode="mutiple",orient="vertical",pos_right="30px")
)
)
c.render_notebook()
VisualMapOpts
:视觉映射配置项
c = (
Scatter()
.add_xaxis(Faker.choose())
.add_yaxis("商品",[(x,y) for x,y in zip(Faker.values(),Faker.values())])
.set_global_opts(
visualmap_opts = opts.VisualMapOpts(type_="size",range_text=['大','小'])
)
)
c.render_notebook()
TooltipOpts
:提示框配置项
c = (
Scatter()
.add_xaxis(Faker.choose())
.add_yaxis("商家A",Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Scatter-多维度数据"),
tooltip_opts=opts.TooltipOpts(
formatter=JsCode(
"function (params) {return params.value}"
)
)
)
)
c.render_notebook()
AxisLineOpts/AxisTickOpts/AxisPointerOpts/AxisOpts
: 坐标轴轴线/刻度/指示器/坐标轴配置项。
c = (
Bar()
.add_xaxis(
[
"名字拉拉长的X轴标签1",
"名字拉拉长的X轴标签2",
"名字拉拉长的X轴标签3",
"名字拉拉长的X轴标签4",
"名字拉拉长的X轴标签5",
"名字拉拉长的X轴标签6",
]
)
.add_yaxis("商家A", [10, 20, 30, 40, 50, 40])
.add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
.set_global_opts(
xaxis_opts=opts.AxisOpts(
name="商家名称",
axislabel_opts=opts.LabelOpts(rotate=-15),
axisline_opts = opts.AxisLineOpts(symbol="arrow",linestyle_opts=opts.LineStyleOpts(width=2)),
axistick_opts = opts.AxisTickOpts(is_inside=True,length=20),
axispointer_opts = opts.AxisPointerOpts(is_show=True,type_="line")
)
)
)
c.render_notebook()
条形图
横向条形图
横向条形图只需要调用reversal_axis()
即可。
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-翻转 XY 轴"))
)
堆叠条形图
堆叠条形图只要在添加y
轴的函数add_yaxis
上添加stack
参数即可。
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), stack="stack1")
.add_yaxis("商家B", Faker.values(), stack="stack1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"))
)
设置条形图的间距
- category_gap参数:
x
轴每个分类的间距 - gap参数:统一分类下多根柱子间的间距
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), category_gap="80%")
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-单系列柱间距离"))
)
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), gap="0%")
.add_yaxis("商家B", Faker.values(), gap="0%")
.set_global_opts(
title_opts=opts.TitleOpts(title="Bar-不同系列柱间距离"),
)
)
带有网格的条形图
网格图,是在x
轴和y
轴上,都绘制横线,形成的网格。可以在opts.AxisOpts
中通过设置splitline_opts
实现。
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Scatter-显示分割线"),
xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
)
)
c.render_notebook()
箱线图
箱线图使用pyecharts.charts.Boxplot
来实现。
v1 = [
[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(["商品1","商品2"])
c.add_yaxis("A",c.prepare_data(v1))
c.add_yaxis("B",c.prepare_data(v2))
c.render_notebook()
散点图
散点图用的是pyecharts.charts.Scatter
来实现的。
基本使用
c = (
Scatter()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Scatter-基本示例"))
)
c.render_notebook()
多维散点图
c = (
Scatter()
.add_xaxis(Faker.choose())
.add_yaxis(
"商家A",
[list(z) for z in zip(Faker.values(), Faker.choose())],
label_opts=opts.LabelOpts(
formatter=JsCode(
"function(params){return params.value[1] +' : '+ params.value[2];}"
)
),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="Scatter-多维度数据"),
tooltip_opts=opts.TooltipOpts(
formatter=JsCode(
"function (params) {return params.name + ' : ' + params.value[2];}"
)
),
visualmap_opts=opts.VisualMapOpts(
type_="color", max_=150, min_=20, dimension=1
),
)
)
c.render_notebook()
地理图
中国地图
c = (
Map()
.add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-VisualMap(连续型)"),
visualmap_opts=opts.VisualMapOpts(max_=200),
)
)
c.render_notebook()
中国局部地图
c = (
Map()
.add("商家A", [list(z) for z in zip(Faker.guangdong_city, Faker.values())], "广东")
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-广东地图"),
visualmap_opts=opts.VisualMapOpts(),
)
)
c.render_notebook()
世界地图
c = (
Map()
.add("商家A", [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="Map-世界地图"),
visualmap_opts=opts.VisualMapOpts(max_=200),
)
)
c.render_notebook()