pyecharts绘制并行多图

 pyecharts.charts的Grid类表示并行排列的组合图表,它可以采用左右布局或上下布局的方式显示多个图表。Grid类中包含一个add()方法,使使用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.faker import Faker
#from pyecharts import options as opts
#from pyecharts.charts import Bar,Grid, Line,Pie,Radar,Timeline
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,     
        color='orange',#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]  # 本土企业占比
 
 
zhu = (
    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}%"))
)
 

 
zhe=bar.overlap(line)  
#创建一个组合图表实例
grid = (
    Grid()
    .add( zhe,
         grid_opts=opts.GridOpts(pos_bottom="60%"),      #grid 组件离容器下侧的距离        
                                 is_control_axis_index=True   
        )  
    
    .add(zhu, 
         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
        )
 

    
         )
grid.render_notebook()
# 绘制时间线轮播图(未完成)

#x = Faker.choose() # 准备x轴数据
#tl_demo = Timeline() # 创建Timeline类对象
#for i in range(2015,2020):
#    bar = (
#        Bar() # 创建Bar类对象
#        .add_xaxis(x_data) # 横坐标的数据
#        .add_yaxis(
#            ".", # 图例
#           Faker.values() # 系列数据
#        )
#        .add_yaxis(".",Faker.values())
#        .set_global_opts(title_opts=opts.TitleOpts("2014-2021年中国中医类医疗卫生机构诊疗#量".format(i)) # 标题
                        )
#    )
#    tl = Timeline()
#    tl.add(bar, "bar")
#    tl.add(line, "line")
#    tl.add(pie, "pie")
#    tl.add(line, "line")
#    
#tl_demo.render("./时间线轮播图示例.html")
#tl_demo.render_notebook()

时间线轮播多图
  pyecharts.charts的Timeline类表示按时间线轮播的组合图表,它可以通过单击时间线的不同时间来切换显示多个图表。Timeline类中提供了两种重要的方法:add_schema()和add()。

1.add_schema() 方法
add_schema()方法用于为图表添加指定样式的时间线,其语法格式如下所示::
 

add_schema(self, axis_type="category", orient="horizontal", symbol=None,
           symbol_size-None, play_interval=None, is_auto_play=False,
           is_loop_play=True, is_rewind_play=False, is_timeline_show=True, 
           is_inverse=False, pos_left=None, pos_right=None, pos_top=None, 
           pos_bottom="-5px", width=None, height=None, linestyle_opts=None, 
           label_opts=None, itemstyle_opts=None)

该方法常用参数的含义如下。

axis_type:表示坐标轴的类型,可以取值为value(数值轴)、category(类目轴)、time(时间轴)、log(对数轴)。

orient:表示时间线的类型,可以取值为horizontal(水平)和 vertical(垂直)。

play_interval:表示播放的速度(跳动的间隔),单位为ms。

is_auto_play:表示是否自动播放,默认为False。

is_loop_play:表示是否循环播放,默认为True。

is_rewind_play:表示是否反向播放,默认为False。

is_timeline_show:表示是否显示时间线组件。

width:表示时间线区域的宽度。

height:表示时间线区域的高度。 

2.add()方法

add()方法用于添加图表和时间点,其语法格式如下所示:

add(self, chart, time_point)

该方法的参数chart表示图表,time_point表示时间点。 

from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line, Page, Tab, Timeline
from pyecharts.faker import Faker
 
bar = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar"))
)
line = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
        legend_opts=opts.LegendOpts(pos_top="48%"),
    )
)
 
line1 = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
        legend_opts=opts.LegendOpts(pos_top="48%"),
    )
)
 
line2 = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
        # 通过联合控制pos_bottom, pos_top, pos_left, pos_right这四个参数,
        # 可以精细控制在图例在画布中的任意布局。
        legend_opts=opts.LegendOpts(
                                    pos_bottom="10%",pos_top="70%",
                                    pos_left="75%",pos_right="5%",
            
                                    # 通过控制图例里面的文字字号大小和矩形块大小,实现整个图例到缩放
                                    textstyle_opts= opts.TextStyleOpts(font_size=5),
                                    item_width=10,item_height=5,
                                   ),
    )
)
 
# 【组合图表: 轮播多图】
tl = Timeline()
tl.add(bar, "bar")
tl.add(line, "line")
tl.add(line1, "line1")
tl.add(line2, "line2")
 
    
tl.render_notebook()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值