用pyecharts绘制柱形折线融合图、圆环图、柱形堆积图、雷达图并行多图

柱形折线融合图

#导入模块
import pyecharts.options as opts
from pyecharts.charts import Bar, Line
#准备数据
x_year = ['2014年', '2015年', '2016年', '2017年', '2018年', '2019年', '2020年', '2021年']  # x轴标签
y_num_left = [87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215] # 诊疗量
y_speed_right = [7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66]  # 同比增速
bar = (
    Bar()
        .add_xaxis(x_year)  # 导入x轴
        .add_yaxis(
        series_name="诊疗量(万人次)",  
        y_axis=y_num_left,  # 柱形图数据
        yaxis_index=0,  
        z=0  
    )
        .extend_axis(
        yaxis=opts.AxisOpts(
            name="诊疗量(万人次)",  
            type_="value",
            position="left",  # 柱形图y轴在左边显示
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61 ")  #轴名称颜色
            ),
        )
    ).set_global_opts(  # 设置全局配置项
        title_opts=opts.TitleOpts(title='2014-2021年中国中医类医疗卫生机构诊疗量'),  # 标题名称
        legend_opts=opts.LegendOpts(pos_left='45%'),  
        tooltip_opts=opts.TooltipOpts(trigger='axis', axis_pointer_type='cross'),  # 显示提示框组件
        toolbox_opts=opts.ToolboxOpts(is_show=True)  
    )
        .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",
            name="同比增速(%)",  # 折线图y轴名称
            position="right",  # 折线图y轴在右边显示
        )
    )
)
line = (
    Line()
        .add_xaxis(x_year)  # 导入x轴
        .add_yaxis(
        series_name="同比增速(%)",  # 折线图图例名称
        y_axis=y_speed_right,  # 折线图数据
        yaxis_index=2,  
        label_opts=opts.LabelOpts(is_show=False),  
    )
)
# 渲染图表
bar.overlap(line).render_notebook()

渲染结果如下:

圆环图

#导入模块
from pyecharts import options as opts
from pyecharts.charts import Pie   # Pie表示饼图
data = [("化学药",33),("中成药",45),("生物制品",3),("保健品",9),("中药饮片",6),("其他",4)]
#通过导入的类创建实例
pie = Pie()
pie.add("",data,radius=["40%", "70%"])
pie.set_global_opts(title_opts=opts.TitleOpts(title="全国药店药品销售额占比",subtitle="用于展示中药市场趋势"),
                    toolbox_opts=opts.ToolboxOpts(is_show=True))
pie.render_notebook()#渲染到notebook上

渲染结果如下:

柱形堆积图

# 导入需要用到的图表类和模块
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType
 
# 准备数据
list1 = [
    {"value": 20.3}, 
    {"value": 22.0},
    {"value": 23.5},
    {"value": 22.5},
    {"value": 22.3},
]
list2 = [
    {"value": 79.7},
    {"value": 78.0},
    {"value": 76.5},
    {"value": 77.5},
    {"value": 77.7},
]


# 绘制柱形堆积图实例
bar = (
   Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add_xaxis([2019, 2020, 2021, 2022, 2023])
    .add_yaxis("跨国企业占比", 
               list1, 
               stack="stack1", # 数据堆叠,同个类目轴上stack值相同可堆叠
               category_gap="50%") 
    .add_yaxis("本土企业占比", list2, stack="stack1", category_gap="50%")
    .set_series_opts(
        label_opts=opts.LabelOpts(
            position="right", # 标签的位置,这里标注于图形右侧
            rotate=10, 
            formatter=JsCode(
                "function(x){return Number(x.data.percent * 100).toFixed() + '%';}"
            ),
        )
    )
    .set_global_opts(title_opts=opts.TitleOpts(title='全国药店中药饮片供应商占比情况'))
)
 
# 渲染图表
bar.render_notebook()

渲染结果如下:

雷达图

#导入模块
from pyecharts import options as opts
from pyecharts.charts import Radar
from pyecharts.globals import ThemeType
 
# 2、准备数据
data = [[33, 45, 3, 9, 6, 4]]
c_schema = [
    {"name": "化学药", "max": 0, "min": 45},
    {"name": "中成药", "max": 0, "min": 45},
    {"name": "生物制品", "max": 0, "min": 45},
    {"name": "医疗器械", "max": 0, "min": 45},
    {"name": "中药饮片", "max": 0, "min": 45},
    {"name": "保健品", "max": 0, "min": 45},
]
 
# 绘制雷达图实例
radar = (
    Radar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
    .set_colors(["#5793f3"]) # 数据点颜色,填充区域也会改变
    .add_schema(
        schema=c_schema, # 雷达指示器配置项列表
        shape="polygon", # 雷达图绘制可选 'polygon' , 'circle'
        center=["50%", "50%"], # 雷达的中心坐标
        radius="80%", # 雷达的半径
        angleaxis_opts=opts.AngleAxisOpts( # 极坐标系的角度轴
            min_=0, 
            max_=360, 
            interval=5, # 坐标轴分割间隔
            axistick_opts=opts.AxisTickOpts(is_show=False), 
            axislabel_opts=opts.LabelOpts(is_show=False), # 刻度标签
            axisline_opts=opts.AxisLineOpts(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(color=["#F5DEB3","#DB7093"], # 分割区域的颜色
                                                  opacity=0.66) 
            ),
        ),
        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.1), # 区域填充样式配置项,透明度
        linestyle_opts=opts.LineStyleOpts(width=1), # 线样式配置项,线宽
    )
    .set_global_opts(title_opts=opts.TitleOpts(title='全国药店药品销售额占比'))
)
 
# 渲染图表
radar.render_notebook()

渲染结果如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值