使用pyecharts绘制并行多图

本文详细介绍了如何使用Pyecharts的Grid类创建并行排列的组合图表,包括左右或上下布局,以及如何通过add方法添加不同类型的图表如Bar、Line、Pie和Radar,并配置相应的网格选项和轴索引。
摘要由CSDN通过智能技术生成

pyecharts.charts的Grid类表示并行排列的组合图表,它可以采用左右布局或上下布局的方式显示多个图表。Grid类中包含一个add()方法,使使用add()方法可以为组合图表

add(self, chart, grid_opts, grid_index=0,is_control_axis_index=False)

参数含义。
chart:表示图表。
grid_opts:表示直角坐标系配置项。
grid_index:表示直角坐标系网格索引,默认为0。
is_control_axis_index:表示是否由自己控制坐坐标轴索引,默认为False。

#导入模版
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年"] 
legend_list = ["诊疗量(万人次)",  "同比增速(%)"]
 
#"诊疗量(万人次)"的数据
value1 =[87430, 90912,96225,101885,107147,116390,105764,120215] 
 
#"同比增速(%)"的数据
value2 = [7.40,4.00,5.83,5.81,5.16,8.63,-9.31,13.66]
 
#柱形图
bar = (
    Bar(init_opts=opts.InitOpts(width="1000px", height="500px"))#设置柱形图宽度与高度
    .add_xaxis(xaxis_data=x_data)                                  
    .add_yaxis(                                                    
        series_name="诊疗量(万人次)",                            
        y_axis=value1, 
        bar_width="40%",
        yaxis_index=1, #表示y轴的索引,用于拥有多个y轴的单图表中。
        
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="诊疗量(万人次)",
            type_="value",
            min_=0,#y轴最小值
            max_=150000,#y轴最大值
            position="left"#位于y轴左侧
        )
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="同比增速(%)",
            type_="value",
            min_=-20,#y轴最小值
            max_=20,#y轴最大值
            position="right",#位于y轴右侧
        )
    )
    #设置全局配置项
    .set_global_opts(                                             
        title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量",
                                 pos_left='center'),
        legend_opts=opts.LegendOpts(is_show=False),#不显示图例                    
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),#显示提示框组件
    )
   #图元样式配置项
    .set_series_opts(itemstyle_opts=opts.ItemStyleOpts(               
                     opacity=1),#设置柱形图透明度  
                     color="orange",#图形的颜色
                     )
    
)
 
line = (
    Line()                                                         
    .add_xaxis(x_data)
    .add_yaxis(
        series_name="同比增速(%)",
        y_axis=value2,
        yaxis_index=2,#表示y轴的索引,用于拥有多个y轴的单图表中。
        symbol="triangle",  #设置折线图折点为三角形
        symbol_size=[15,15],#设置三角形的长度和宽度  
        z=3
    )
       #图元样式配置项
    .set_series_opts(itemstyle_opts=opts.ItemStyleOpts(               
                     opacity=0.6),#设置柱形图透明度  
                     color="purple",#图形的颜色
                     )
)
 
 
 
#3.堆积柱形图
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]  # 本土企业占比 
stack = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis("跨国企业占比", data1, stack="stack1",  #stack="stack1":堆积柱形图
               color='blue',    
                xaxis_index=1, 
                yaxis_index=3,
               label_opts=opts.LabelOpts(is_show=False)#不显示柱形图数据
              )                
    .add_yaxis("本土企业占比", data2, stack="stack1", 
               category_gap="70%",#同一系列的柱间距离,默认为类目间距的 20%,可设固定值
                xaxis_index=1, 
                yaxis_index=3,
               label_opts=opts.LabelOpts(is_show=False)#不显示柱形图数据
              )
    #设置全局配置项 
    .set_global_opts(                                             
        title_opts=opts.TitleOpts(title="全国药店中药饮片供应商占比", #标题名称
                                 pos_left='34%',
                                 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°
                                 )
                     ) 
        )
# stack.render_notebook()
 
# 环形图(放在堆积图后面)
#添加标签与数值
labels=[('20岁以下',2.2),('20-30岁',27.9),('31-40岁',56.2),('41-50岁',10.9),('51岁以上',2.8)]
#链式调用
pie = (
    Pie()
    .add("",
        labels,#标签与数值
        center=["15%", "80%"], # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标
        radius=["10%", "30%"] 
    )
    #设置全局配置项
    .set_global_opts(                     
        title_opts=opts.TitleOpts(
                                 title="中药材消费者画像",
                                 pos_left='7%',
                                 pos_top="52%"
                                 ),
        
        legend_opts=opts.LegendOpts(is_show=False) #不展示图例 
                     )
          )
 
# pie.render_notebook()
 
c=bar.overlap(line)    #柱形图-折线融合(放在其他实例后面,不然会排版错乱)
# c.render_notebook()  
 
#创建一个组合图表实例(数据填充格式为:其他图表实例,Bar,Line,Pie,Scatter) 
#GridOpts:直角坐标系网格配置项
#  通过联合调整pos_bottom,pos_top,pos_left, pos_right 这四个参数,实现并行组合图表中的任意布局
grid = (
    Grid()
    .add( c,
         grid_opts=opts.GridOpts(pos_bottom="60%"),            #grid 组件离容器下侧的距离        
                                 is_control_axis_index=True   
        )  
    
    .add(stack, 
         grid_opts=opts.GridOpts(pos_bottom="10%",
                                 pos_top="60%",
                                 pos_left="35%",
                                 pos_right="40%"
                                ),
                                 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
        )
)
 
 
grid.render_notebook()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值