from pyecharts import options as opts
from pyecharts.charts import Bar, Line
from pyecharts.commons.utils import JsCode
# 表1数据
years = ['2014年', '2015年', '2016年', '2017年', '2018年', '2019年', '2020年', '2021年']
treatments = [87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215]
growth_rates = [7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66]
bar = (
Bar()
.add_xaxis(years)
.add_yaxis("诊疗量(万人次)", treatments)
.set_series_opts(itemstyle_opts=opts.ItemStyleOpts(
opacity=0.5),label_opts=opts.LabelOpts(position="top"))
.extend_axis(
yaxis=opts.AxisOpts(
name="同比增速(%)",
type_="value",
min_=-10,
max_=15,
position="right",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color="#d14a61")
),
axislabel_opts=opts.LabelOpts(formatter="{value} %"),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(title="诊疗量和同比增速"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
yaxis_opts=opts.AxisOpts(
name="诊疗量(万人次)", position="left", axislabel_opts=opts.LabelOpts(formatter="{value} 万")
),
)
)
line = (
Line()
.add_xaxis(years)
.add_yaxis(
"同比增速(%)",
growth_rates,
yaxis_index=1,
label_opts=opts.LabelOpts(formatter="{value} %"),
)
)
# 合并柱形图和折线图
bar.overlap(line)
# 渲染图表
bar.overlap(line).render_notebook()
代码运行结果如下: