from pyecharts.charts import Bar, Line from pyecharts import options as opts from pyecharts.globals import ThemeType # 数据 years = ['2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021'] treatment = [87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215] growth_rate = [7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66] # 创建柱状图 bar = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(years) .add_yaxis("诊疗量(万人次)", treatment, yaxis_index=0) .extend_axis( yaxis=opts.AxisOpts( axislabel_opts=opts.LabelOpts(formatter="{value}%"), name="同比增速(%)", type_="value", min_=min(growth_rate), max_=max(growth_rate), ) ) .set_series_opts( itemstyle_opts=opts.ItemStyleOpts(opacity=0.5, color='pink'), ) ) # 创建折线图 line = ( Line() .add_xaxis(years) .add_yaxis("同比增速(%)", growth_rate, yaxis_index=1, label_opts=opts.LabelOpts(is_show=False)) .set_series_opts( label_opts=opts.LabelOpts(is_show=False), linestyle_opts=opts.LineStyleOpts(width=2) ) ) # 合并柱状图和折线图 overlap = bar.overlap(line) # 渲染图表 overlap.render_notebook()
首先,通过导入必要的模块和设置主题类型,准备数据。years
列表包含了年份,treatment
列表包含了每年的诊疗量数据,growth_rate
列表包含了同比增速数据。
然后,通过 Bar
类创建柱状图对象 bar
。使用 add_xaxis
方法设置 x 轴数据为年份,使用 add_yaxis
方法添加柱状图的系列数据,其中 "诊疗量(万人次)"
为系列的名称,treatment
为 y 轴数据,yaxis_index=0
表示该系列使用左侧的 y 轴。使用 extend_axis
方法添加右侧的 y 轴,其中设置了轴标签格式为百分比形式,并设置了最小值和最大值。
接下来,通过 Line
类创建折线图对象 line
。使用 add_xaxis
方法设置 x 轴数据为年份,使用 add_yaxis
方法添加折线图的系列数据,其中 "同比增速(%)"
为系列的名称,growth_rate
为 y 轴数据,yaxis_index=1
表示该系列使用右侧的 y 轴。同时设置了系列的样式选项,包括是否显示标签和线条宽度。
最后,通过 overlap
对象将柱状图和折线图合并在一起,并调用 render_notebook
方法在 Jupyter Notebook 中渲染图表。