用pyecharts绘制折线图和柱形图,并在同一个图表上显示

数据资料

年份(年)诊疗量(万人次)同比增速(%)
2014874307.40
2015909124.00
2016962255.83
20171018855.81
20181071475.16
20191163908.63
2020105764-9.13
202112021513.66

导入模块和准备数据

from pyecharts import options as opts
from pyecharts.charts import Bar, Line

x_year = ['2014年', '2015年', '2016年', '2017年', '2018年', '2019年', '2020年', '2021年']  # x轴标签
y_num_left = [87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215] # 诊疗量
y_speed_right = [7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66]  # 同比增速

导入模块前需要下载pyecharts包到python安装文件夹下的Lib中的site-packages里。首先打开site-packages, 然后在上面搜索栏输入cmd并回车打开命令行模式,然后输入以下指令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

绘制柱形图

bar = (
    Bar()
        .add_xaxis(x_year)  # 导入x轴
        .add_yaxis(
        series_name="诊疗量(万人次)",  # 柱形图图例名
        y_axis=y_num_left,  # 柱形图数据
        yaxis_index=0,  # 表示y轴的索引,用于拥有多个y轴的单图表中。
        z=0  # 因为折线图会被柱状图遮挡,所以此处把柱状图置底
    )
        .extend_axis(
        yaxis=opts.AxisOpts(
            name="诊疗量(万人次)",  # 柱形图y轴名称
            type_="value",
            position="left",  # 柱形图y轴在左边显示
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61 ")  # 轴名称颜色
            ),
        )
    ).set_global_opts(  # 设置全局配置项
        title_opts=opts.TitleOpts(title='2014-2021年中国中医类医疗卫生机构诊疗量'),  # 标题名称
        legend_opts=opts.LegendOpts(pos_left='45%'),  # 图例距离左边边距:40%
        tooltip_opts=opts.TooltipOpts(trigger='axis', axis_pointer_type='cross'),  # 显示提示框组件
        toolbox_opts=opts.ToolboxOpts(is_show=True)  # 显示工具栏
    )
        .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",
            name="同比增速(%)",  # 折线图y轴名称
            position="right",  # 折线图y轴在右边显示
        )
    )
)

上面的方法及参数更详细的用法可以参考官方文档,文档讲的很清楚的,如果有不懂的,可以在评论区留言,小编看到会回复的。下面是官方文档的网址:

图表 API - pyecharts - A Python Echarts Plotting Library built with love.

绘制折线图

line = (
    Line()
        .add_xaxis(x_year)  # 导入x轴
        .add_yaxis(
        series_name="同比增速(%)",  # 折线图图例名称
        y_axis=y_speed_right,  # 折线图数据
        yaxis_index=2,  # 表示y轴的索引,用于拥有多个y轴的单图表中。
        label_opts=opts.LabelOpts(is_show=False),  # 不显示柱形图数据
    )
)

渲染到pycharm中显示图表

bar.overlap(line).render()

这里需要注意的是如果在anacondas中运行,需要改成如下代码

bar.overlap(line).render_notebook() 

运行效果图

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
可以使用 Pyecharts 中的 Grid(网格)组件来实现在一个画布中绘制两个图表的效果,其中柱形图折线图分别对应网格中的左边和右边。 以下是一个示例代码: ```python from pyecharts import options as opts from pyecharts.charts import Bar, Line, Grid # 创建柱形图 bar = ( Bar() .add_xaxis(['A', 'B', 'C', 'D', 'E']) .add_yaxis('柱形图', [5, 20, 36, 10, 75]) .set_global_opts(title_opts=opts.TitleOpts(title='柱形图')) ) # 创建折线图 line = ( Line() .add_xaxis(['A', 'B', 'C', 'D', 'E']) .add_yaxis('折线图', [15, 30, 46, 20, 95], yaxis_index=1) .set_global_opts(title_opts=opts.TitleOpts(title='折线图')) ) # 使用网格组件将柱形图折线图合并到一个画布中 grid = ( Grid() .add(bar, grid_opts=opts.GridOpts(pos_left='5%', pos_right='50%')) .add(line, grid_opts=opts.GridOpts(pos_left='55%', pos_right='5%')) ) # 渲染图表 grid.render('bar_and_line.html') ``` 上述代码中,首先创建了一个柱形图和一个折线图柱形图使用 `Bar` 类创建,折线图使用 `Line` 类创建,它们都通过 `add_xaxis` 和 `add_yaxis` 方法设置了横坐标和纵坐标的数据。需要注意的是,折线图的纵坐标需要通过 `yaxis_index` 参数指定为右边的纵坐标轴。 接下来使用 `Grid` 类创建了一个网格组件,通过 `add` 方法将柱形图折线图添加到网格中,设置了两个网格的位置,其中柱形图占据了左边的网格,折线图占据了右边的网格。 最后调用 `render` 方法将图表渲染为 HTML 文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Life City

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值