【pyecharts 的绘图思路(面向对象)】
1、准备数据(符合传参的需求)
2、导入需要的图表类实例(Bar、Line、Pie...)
3、通过导入的类,创建实例(柱形图实例等)
4、往该实例填充数据
5、设置“系列配置项”和“全局配置项”(类似于 matplotlib 图表样式美化和辅助元素定制)
6、展示图表(渲染图表)
一、例题
需求:请用一张独立画布,柱形图和折线图融合在同一个坐标系展示表1数据。
表1. 2014-2021年中国中医类医疗卫生机构诊疗量
年份(年) | 诊疗量(万人次) | 同比增速(%) |
2014 | 87430 | 7.40 |
2015 | 90912 | 4.00 |
2016 | 96225 | 5.83 |
2017 | 101885 | 5.81 |
2018 | 107147 | 5.16 |
2019 | 116390 | 8.63 |
2020 | 105764 | -9.13 |
2021 | 120215 | 13.66 |
二、代码如下:
from pyecharts import options as opts
from pyecharts.charts import Bar, Line
from pyecharts.faker import Faker
x_year = ["2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021"]
data1 = [87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215]
data2 = [7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66]
bar = Bar()
bar.add_xaxis(x_year)
bar.add_yaxis("诊疗量(万人次)", data1,
# z值小的图形会被z值大的图形覆盖
z=2,
)
bar.extend_axis(
yaxis=opts.AxisOpts(
name='同比增速(%)',
# 坐标轴标签配置项
axislabel_opts=opts.LabelOpts(
formatter="{value}%",
font_size = 10
),
interval=3,
)
)
# 设置系列配置项
bar.set_series_opts(
label_opts=opts.LabelOpts(
is_show=True,
font_size = 20
)
)
# 设置全局配置项(“全局配置项”中的“图例”和“提示框”都是默认显示的)
bar.set_global_opts(
# 图例
legend_opts=opts.LegendOpts(is_show=True, pos_left='50%', pos_bottom='93%'), # pos_left\pos_bottom表示图例离容器左、下的距离
# 工具箱
toolbox_opts=opts.ToolboxOpts(is_show=False),
# 缩放条
datazoom_opts=opts.DataZoomOpts(is_show=True, range_start='100%', range_end='100%'),
# # 标题(title为标题,subtitle为副标题)
title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗"),
# 轴的配置(这里是生效 x 轴)
xaxis_opts=opts.AxisOpts(
# 坐标轴名称
name='年份(年)',
# 坐标轴名称与轴线之间的距离
name_gap=40,
# 坐标轴名字旋转,角度值
# name_rotate=60,
),
# 轴的配置(这里是生效 y 轴)
yaxis_opts=opts.AxisOpts(
# 坐标轴名称
name='诊疗量(万人次)',
# 坐标轴标签配置项
axislabel_opts=opts.LabelOpts(
formatter="{value}",
font_size = 10
),
),
)
line = Line()
line.add_xaxis(x_year)
line.add_yaxis("同比增速(%)", data2, yaxis_index=1,
# z值小的图形会被z值大的图形覆盖
z=3,
)
# bar.overlap(line)
# bar..render_notebook()
bar.overlap(line).render_notebook()
三、展示图表