可视化之并行多图

本文通过柱状图展示了2014-2021年中国中医类医疗卫生机构诊疗量及其同比增速;堆叠柱形图呈现了2019-2023年全国药店中药饮片供应商占比;饼图描绘了中药材消费者的年龄分布。雷达图部分未成功绘制。
摘要由CSDN通过智能技术生成

并行多图文档

#导入模版
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line,Pie,Radar
 
#1.绘制柱形图
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()      #创建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',     #stack="stack1":堆积柱形图
                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()           #创建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()
# radar_x.add_schema(x_schema)
# radar_x.add('', v1, color='red').set_colors(['red'])

# radar_x.set_global_opts(
#         title_opts=op.TitleOpts(title="全国药店药品销售额占比", pos_right="center"),
#         legend_opts=op.LegendOpts( align="left", pos_left='7%',
#                                   pos_bottom='14%')
#     )
 
 
 
bl=bar.overlap(line)  
 
 
 
 
#创建一个组合图表实例
grid = (
    Grid()
    .add( bl,
         grid_opts=opts.GridOpts(pos_bottom="60%"),      #grid 组件离容器下侧的距离        
                                 is_control_axis_index=True   
        )  
    
    .add(tu, 
         grid_opts=opts.GridOpts(pos_bottom="10%",
                                 pos_top="60%",
                                 pos_left="40%",
                                 pos_right="35%"
                                ),
                                 is_control_axis_index=True
        )
 
    .add(pie, 
         grid_opts=opts.GridOpts(pos_bottom="5%",
                                 pos_top="60%",
                                 pos_left="10%",
                                 pos_right="70%"),
                                 is_control_axis_index=True
        )
 
#         .add(radar_x, 
#          grid_opts=opts.GridOpts(pos_bottom="15%",
#                                  pos_top="60%",
#                                  pos_left="60%",
#                                  pos_right="15%"),
#                                  is_control_axis_index=True
    
         )
grid.render_notebook()

运行效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值