可视化并行多图

文章使用Pyecharts库展示了2014-2021年中国中医类医疗卫生机构的诊疗量柱状图、同比增速折线图,以及药店中药饮片供应商占比的堆积柱状图。同时,还分析了中药材消费者画像的环形图和药品销售额占比的雷达图。
摘要由CSDN通过智能技术生成

可视化作业文档要求

运行结果如下

# 导入模块
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line, Pie, Radar

# 绘制柱形图
x_data = ["2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021"]
value_1 = [87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215]
value_2 = [7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.31, 13.66]

bar = (
    Bar()  # 创建柱形图对象
    .add_xaxis(xaxis_data=x_data)  # 添加x轴数据
    .add_yaxis(
        series_name="诊疗量(万人次)",  # 图例
        y_axis=value_1,  # y轴柱形图数据
        yaxis_index=1,  # 表示y轴的索引,用于拥有多个y轴的单图表中。
        label_opts=opts.LabelOpts(is_show=False),  # 不显示数据标签
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="诊疗量(万人次)",  # y轴名称
            type_="value",
            position="left"  # 位于y轴左侧
        )
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="同比增速(%)",  # y轴名称
            type_="value",
            min_=-20,  # y轴最小值:-20
            max_=20,  # y轴最大值:20
            position="right",  # 位于y轴右侧
        )
    )
    .set_global_opts(  # 设置全局配置项
        title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量",
                                   pos_left='center'),  # 标题名称
        legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例

    )
    .set_series_opts(
        itemstyle_opts=opts.ItemStyleOpts(  # 图元样式配置项
            opacity=0.5),  # 设置柱形图透明度:0.5
    )

)

line = (
    Line()  # 创建折线图对象
    .add_xaxis(x_data)  # 添加x轴数据
    .add_yaxis(
        series_name="同比增速(%)",  # 图例名:同比增速(%)
        y_axis=value_2,  # y轴柱形图数据
        yaxis_index=2,  # 表示y轴的索引,用于拥有多个y轴的单图表中。
    )
)

# 堆积柱形图
x_data = ['2019年', '2020年', '2021年', '2022年', '2023年']
data1 = [20.3, 22.0, 23.5, 22.5, 22.3]  # 跨国企业占比
data2 = [79.7, 78.0, 76.5, 77.5, 77.7]  # 本土企业占比

tu = (
    Bar()  # 创建柱形图对象
    .add_xaxis(x_data)
    .add_yaxis("跨国企业占比", data1, stack="stack1", category_gap="30%", color='blue',
               xaxis_index=1,
               yaxis_index=3,
               label_opts=opts.LabelOpts(is_show=False)  # 不显示柱形图数据
               )
    .add_yaxis("本土企业占比", data2, stack="stack1", category_gap="50%", color='orange',
               xaxis_index=1,
               yaxis_index=3,
               label_opts=opts.LabelOpts(is_show=False)  # 不显示柱形图数据
               )
    .set_global_opts(  # 设置全局配置项
        title_opts=opts.TitleOpts(title="全国药店中药饮片供应商占比",  # 标题名称
                                   pos_left='40%',
                                   pos_top="52%"),
        legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),  # 显示提示框组件
        yaxis_opts=opts.AxisOpts(min_=0, max_=100,  # y轴刻度范围0—100
                                  interval=25  # y轴刻度范围分为25一组
                                  ),
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)  # x轴标签旋转45°
                                 )
    )
)

# 绘制环形图
# 添加标签与数值
labels = [('20岁以下', 2.2),
          ('20-30岁', 27.9),
          ('31-40岁', 56.2),
          ('41-50岁', 10.9),
          ('51岁以上', 2.8)]

pie = (
    Pie()  # 创建饼图对象
    .add(
        "",
        labels,  # 标签与数值
        center=["20%", "80%"],  # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标
        radius=["10%", "30%"]  # 饼图的半径,数组的第一项是内半径,第二项是外半径
    )
    .set_global_opts(  # 设置全局配置项
        title_opts=opts.TitleOpts(title="中药材消费者画像",
                                   pos_left='10%',
                                   pos_top="52%",
                                   is_show=True,  # 显示标题
                                   ),

        legend_opts=opts.LegendOpts(is_show=False, )  # 不展示图例

    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%"))
)

# 绘制雷达图
v1 = [[33, 45, 3, 9, 6, 4]]

x_schema = [
    {"name": "化学药", "color": 'black', "font_size": 18},
    {"name": "中成药", "color": 'black', "font_size": 18},
    {"name": "生物制品", "color": 'black', "font_size": 18},
    {"name": "医疗器械", "color": 'black', "font_size": 18},
    {"name": "中药饮片", "color": 'black', "font_size": 18},
    {"name": "保健品", "color": 'black', "font_size": 18}
]

radar_x = (
    Radar()  # 创建雷达图对象
    .add_schema(x_schema)
    .add('', v1, color='red').set_colors(['red'])
    .set_global_opts(
        title_opts=opts.TitleOpts(title="全国药店药品销售额占比", pos_right="center"),
        legend_opts=opts.LegendOpts(align="left", pos_left='7%', pos_bottom='14%')
    )
)

# 创建一个组合图表实例
grid = (
    Grid()
    .add(bar
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值