pyecharts实例--柱形-折线融合图、圆环图、堆积柱形图、雷达图,并行多图、轮播多图

柱形-折线融合图

# 1.导入所需要用到的库以及图表类
import pyecharts
from pyecharts.charts import Bar, Line   # Bar表示的是柱形图/条形图,Line表示的是折线图
from pyecharts import options as opts

# 2.准备x轴数据
x_year = ["{}年".format(i) for i in range(2014, 2022)]   
# 设置x轴的年份数据,后面跟的单位为“年”

# 3.创建柱形图实例,为图表实例填充数据,并设置可选的系列配置项)
bar = (
    Bar(init_opts=opts.InitOpts(width="1000px", height="500px"))
    # 设置柱形图宽度width为1000px、高度heigh为500px
    .add_xaxis(x_year)   # 添加柱形图x轴的数据
    .add_yaxis("诊疗量(万人次)",   # 添加图例,名为"诊疗量(万人次)"
              [87430,90912,96225,101885,107147,116390,105764,120215],   # y轴数据
              yaxis_index=1,   # y轴的索引,用于绘制多个y轴的图表中
              color="orange"   # 设置柱形图填充颜色为橙色
             )
     .extend_axis(
         yaxis=opts.AxisOpts(name="诊疗量(万人次)",    # y轴名称
                        type_="value",
                        min_=0, max_=140000,    # 设置y轴最小值min为0,最大值max为14000
                        position="left",   # 显示在y轴左侧
                        axisline_opts=opts.AxisLineOpts(
                            linestyle_opts=opts.LineStyleOpts(color="orange")),   # 设置y轴、y轴名称以及y轴数据的颜色
                        )
                )
    .extend_axis(
        yaxis=opts.AxisOpts(name="同比增长速(%)",   # y轴名称
                            type_="value",
                            min_=-20, max_=20,   # 设置y轴最小值min为-20,最大值max为20 
                            position="right",   # 显示在y轴右侧
                            axisline_opts=opts.AxisLineOpts(
                                linestyle_opts=opts.LineStyleOpts(color="purple")),   # 设置y轴、y轴名称以及y轴数据的颜色
                           )
                )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量",pos_top="1%", pos_left="10%"),   # 设置标题名称
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),   # 设置显示提示框
        legend_opts=opts.LegendOpts(pos_top="1%",pos_left="50%"),   # 图例距离左边边距为50%
    )
    .set_series_opts(
        itemstyle_opts=opts.ItemStyleOpts(
        opacity=0.5)   # 设置透明度为0.5
    )
)

# 4.创建折线图实例,为图表实例填充数据
line = (
    Line()
    .add_xaxis(x_year)   # 添加折线图x轴的数据
    .add_yaxis("同比增长速(%)",   # 添加图例,名为"同比增长速(%)"
               [7.40,4.00,5.83,5.81,5.16,8.63,-9.13,13.66],    # y轴数据
               yaxis_index=2,   # y轴的索引,用于绘制多个y轴的图表中
               z=3,
               color="purple")   # 设置折线图颜色为紫色
)

# 5.渲染图表
bar.overlap(line).render_notebook()   # 直接渲染到notebook

 展示图表结果如下:

圆环图 

# 1.导入所需要用到的库以及图表类
from pyecharts import options as opts
from pyecharts.charts import Pie   # Pie表示饼图

# 2.创建图表实例,添加可选的全局配置项
(
    Pie()
    .add(
        "",
        [list(z) for z in zip(
            ['20岁以下', '20-30岁', '31-40岁', '41-50岁', '51岁以上'], 
            [2.2, 27.9, 56.2, 10.9, 2.8])],   # 传入数据
#         [("20岁以下",2.2),("20-30岁",27.9),("31-40岁",56.2),("41-50岁",10.9),("51岁以上",2.8)],   # 也可以用这种方法传入数据
        radius=[80,160],   
        # 饼图的半径,数组的第一项是内半径,第二项是外半径
        # 默认设置成百分比,相对于容器高宽中较小的一项的一半
        center=["27%","45%"],   
        # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标,默认设置成百分比
        # 设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
        start_angle = 0,   # 设置起始角度,支持范围 [0,360]
        is_clockwise = False,   # 饼图的扇区是否是顺时针排布,False表示逆时针排布
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="中药材消费者画像",pos_top="3%",pos_left="18%"),   # 设置标题以及标题的位置
        legend_opts=opts.LegendOpts(orient="vertical", pos_top="3%",pos_left="47%"),   # 设置图例的位置
        
    )
    .render_notebook()   # 渲染图表
)

  展示图表结果如下:

堆积柱形图 

# 1.导入所需要用到的库以及图表类
from pyecharts import options as opts
from pyecharts.charts import Bar

# 2.创建柱形图实例,添加可选的全局配置项
(
    Bar()
    .add_xaxis(['2019年','2020年','2021年','2022年','2023年'])   # x轴数据
    .add_yaxis("跨国企业占比", [20.3,22.0,23.5,22.5,22.3], stack="stack1", bar_width=70)   # 第一个y轴数据,stack="stack1"表示数据堆叠,bar_width表示设置柱形的宽度
    .add_yaxis("本土企业占比", [79.7,78.0,76.5,77.5,77.7], stack="stack1", bar_width=70)   #第二个y轴数据
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="全国药店中药饮品供应商占比",pos_top="3%",pos_left="30%",   # 设置标题名称以及控制标题所在位置
#             title_textstyle_opts=opts.TextStyleOpts(font_size=12),   # 控制标题的字体大小,这里就不设置了
        ),
        legend_opts=opts.LegendOpts(pos_top="3%",pos_left="60%"),   # 控制图例的位置
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=17)) # 控制x轴字体大小
    )
    .render_notebook()   # 渲染图表
)

  展示图表结果如下:

 雷达图

# 1.导入所需要用到的库以及图表类
from pyecharts import options as opts
from pyecharts.charts import Radar   # Radar表示雷达图

# 2.准备数据以及标签名称
data = [{"value": [33, 45, 3, 9, 6, 4], "name": "销售额占比"}]
c_schema = [
    {"name": "化学药", "max": 45, "min": 0},
    {"name": "中成药", "max": 45, "min": 0},
    {"name": "生物制品", "max": 45, "min": 0},   # max、min控制最大值和最小值
    {"name": "医疗器械", "max": 45, "min": 0},
    {"name": "中药饮品", "max": 45, "min": 0},
    {"name": "保健品", "max": 45, "min": 0},
]

# 3.创建雷达图实例,添加可选的全局配置项
(
    Radar()
    .set_colors(["pink"])   # 数据点与填充区域颜色
    .add_schema(
        schema=c_schema,
        shape="circle",   # 雷达图绘制类型有'polygon'和'circle'两种参数可选
        center=["50%", "50%"],   # 雷达的圆心坐标,一般设置成百分比,第一项是相对于容器宽度,第二项是相对于容器高度
        radius="80%",   # 雷达的半径
        start_angle=0,
        textstyle_opts=opts.TextStyleOpts(color="black"),   # 设置
        angleaxis_opts=opts.AngleAxisOpts(
            min_=0,
            max_=360,
            is_clockwise=False,
            interval=5,    # 坐标轴间隔
            axistick_opts=opts.AxisTickOpts(is_show=False),
            axislabel_opts=opts.LabelOpts(is_show=False),
            splitline_opts=opts.SplitLineOpts(is_show=False),
        ),
        radiusaxis_opts=opts.RadiusAxisOpts(
            min_=0,
            max_=45,
            interval=20,   # 坐标轴间隔
            splitarea_opts=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)   # 设置透明度
            ),
        ),
        polar_opts=opts.PolarOpts(),
        splitarea_opt=opts.SplitAreaOpts(is_show=False),   # 分隔区域配置项,这里不设置
        splitline_opt=opts.SplitLineOpts(is_show=False),   # 分割线配置项,这里不设置
    )
    .add(
        series_name="",   # 数据名,这里就不设置了
        data=data,
        areastyle_opts=opts.AreaStyleOpts(opacity=0.7),   # 设置区域填充的透明度
        linestyle_opts=opts.LineStyleOpts(width=1),   # 线样式配置项,设置线的宽度
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="全国药店药品销售额占比",pos_top="3%", pos_left="40%",),
    )
    .render_notebook()   # 渲染图表
)

   展示图表结果如下:

并行多图 

# 导入所需要用到的库以及图表类
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line, Pie, Radar   
# Bar表示的是柱形图/条形图,Line表示的是折线图,Pie表示的是饼图,Radar表示的是雷达图

# 柱形-折线融合图
x_year = ["{}年".format(i) for i in range(2014, 2022)]   
# 设置x轴的年份数据,后面跟的单位为“年”
# 柱形图实例
bar1 = (
    Bar(init_opts=opts.InitOpts(width="1000px", height="500px"))
    # 设置柱形图宽度width为1000px、高度heigh为500px
    .add_xaxis(x_year)   # 添加柱形图x轴的数据
    .add_yaxis("诊疗量(万人次)",   # 添加图例,名为"诊疗量(万人次)"
              [87430,90912,96225,101885,107147,116390,105764,120215],   # y轴数据
              yaxis_index=1,   # y轴的索引,用于绘制多个y轴的图表中
              color="orange",   # 设置柱形图填充颜色为橙色
              xaxis_index=0,
              z=0
             )
     .extend_axis(
         yaxis=opts.AxisOpts(name="诊疗量(万人次)",    # y轴名称
                        type_="value",
                        min_=0, max_=140000,    # 设置y轴最小值min为0,最大值max为15000
                        position="left",   # 显示在y轴左侧
                        axisline_opts=opts.AxisLineOpts(
                            linestyle_opts=opts.LineStyleOpts(color="orange")),   # 设置y轴、y轴名称以及y轴数据的颜色
                        )
                )
    .extend_axis(
        yaxis=opts.AxisOpts(name="同比增长速(%)",   # y轴名称
                            type_="value",
                            min_=-20, max_=20,   # 设置y轴最小值min为-20,最大值max为20 
                            position="right",   # 显示在y轴右侧
                            axisline_opts=opts.AxisLineOpts(
                                linestyle_opts=opts.LineStyleOpts(color="purple")),   # 设置y轴、y轴名称以及y轴数据的颜色
                           )
                )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量",pos_top="1%", pos_left="10%"),   # 设置标题名称,控制标题的位置
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),   # 设置显示提示框
        legend_opts=opts.LegendOpts(pos_top="1%",pos_left="53%"),   # 图例距离左边边距为53%,距离顶部边距为1%
    )
    .set_series_opts(
        itemstyle_opts=opts.ItemStyleOpts(
        opacity=0.5)   # 设置透明度为0.5
    )
)

# 折线图实例
line = (
    Line()
    .add_xaxis(x_year)   # 添加折线图x轴的数据
    .add_yaxis("同比增长速(%)",   # 添加图例,名为"同比增长速(%)"
               [7.40,4.00,5.83,5.81,5.16,8.63,-9.13,13.66],    # y轴数据
               yaxis_index=2,   # y轴的索引,用于绘制多个y轴的图表中
               z=3,   # 折线图展示在柱形图上方
               xaxis_index=0,
               color="purple")   # 设置折线图颜色为紫色
)

# 堆积柱形图
bar2 = (
    Bar()
    .add_xaxis(['2019年','2020年','2021年','2022年','2023年'])
    .add_yaxis("跨国企业占比", 
               [20.3,22.0,23.5,22.5,22.3], 
               stack="stack1",   # 数据堆叠
               xaxis_index=1,yaxis_index=3)
    .add_yaxis("本土企业占比", 
               [79.7,78.0,76.5,77.5,77.7], 
               stack="stack1",
               xaxis_index=1,yaxis_index=3)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="全国药店中药饮品供应商占比",pos_top="50%",pos_left="38%",   # 设置标题名称,控制标题的位置
        ),
        legend_opts=opts.LegendOpts(is_show=False),   # 设置不显示图例
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=9)) # 控制x轴字体大小
    )
)

# 饼图
pie = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(
            ['20岁以下', '20-30岁', '31-40岁', '41-50岁', '51岁以上'], 
            [2.2, 27.9, 56.2, 10.9, 2.8])],   # 传入数据
#         [("20岁以下",2.2),("20-30岁",27.9),("31-40岁",56.2),("41-50岁",10.9),("51岁以上",2.8)],   # 也可以用这种方法传入数据
        radius=[40,80],   
        # 饼图的半径,数组的第一项是内半径,第二项是外半径
        # 默认设置成百分比,相对于容器高宽中较小的一项的一半
        center=["20%","80%"], 
        # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标,默认设置成百分比
        # 设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
        start_angle = 0,   # 起始角度,支持范围 [0,360]
        is_clockwise = False,   # 饼图的扇区是否是顺时针排布
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="中药材消费者画像",pos_top="50%",pos_left="12%"),   # 设置标题以及标题的位置
        legend_opts=opts.LegendOpts(is_show=False),   # 设置不显示图例
    )
)

# 放在实例后面,不然会报错
barline=bar1.overlap(line)   # 融合图表

grid=(
    Grid()
    .add(barline, grid_opts=opts.GridOpts(pos_bottom="60%"),
         is_control_axis_index=True,)   # 第一个图表:折线-柱形融合图
    .add(bar2, grid_opts=opts.GridOpts(pos_top="57%",pos_bottom="5%",pos_left="41%",pos_right="37%"),
         is_control_axis_index=True,)   # 第三个图表:堆积柱形图
#     .add(radar, grid_opts=opts.GridOpts(pos_top="60%",pos_left="65%"))
    .add(pie, grid_opts=opts.GridOpts(pos_top="57%"), 
         is_control_axis_index=True,)   # 第二个图表:饼图
)

# 渲染图表到notebook
grid.render_notebook()

 展示图表结果如下:

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值