如何用一张独立画布将柱形图和折线图融合在同一个坐标系

【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()

三、展示图表

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值