pyecharts组合图

本组合图需要柱形折线图,圆环图,堆积图和雷达图,由于雷达图组合不了(其实就是不会)首先陆续发下几张图代码:

        圆环图:

from pyecharts import options as opts
from pyecharts.charts import Bar, Page,Line,Pie,Radar,Grid

pie_demo=(
          Pie()
          .add("",[('20岁以下',2.2),('20-20岁',27.9),
                   ('31-40岁',56.2),('41-50岁',10.9),
                   ('51岁以上',2.8)],center=["20%","80%"],radius=[50,80], label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
          .set_global_opts(title_opts=opts.TitleOpts(title="中药材消费者画像",pos_left="15%",pos_top="55%"),
                           legend_opts=opts.LegendOpts(is_show=False))
          
)
pie_demo.render_notebook()

        

        堆积图:

from pyecharts import options as opts
from pyecharts.charts import Bar, Page,Line,Pie,Radar,Grid

tick_label=['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]
bar=(
     Bar()
     .add_xaxis(tick_label)
     .add_yaxis("供应商A",data1,stack="stack1",color=" cyan")
     .add_yaxis("供应商B",data2,stack="stack1",color="orange")
     .set_global_opts(title_opts=opts.TitleOpts(title="全国药店中药饮片供应商占比",pos_left="20%",pos_top="5%"),
                     legend_opts=opts.LegendOpts(is_show=False))
)
bar.render_notebook()

        雷达图:

from pyecharts import options as opts
from pyecharts.charts import Bar, Page,Line,Pie,Radar,Grid

data=[[33,45,3,9,10]]
c_schema = [
        {"name": "化学药", "max": 50, "min": 0, "color": 'black', "font_size": 18},
        {"name": "中成药", "max": 50, "min": 0, "color": 'black', "font_size": 18},
        {"name": "生物制品", "max": 50, "min": 0, "color": 'black', "font_size": 18},
        {"name": "中药饮片", "max": 50, "min": 0, "color": 'black', "font_size": 18},
        {"name": "保健品", "max": 50, "min": 0, "color": 'black', "font_size": 18}
    ]
c = (
    Radar()
    .set_colors(["#4587E7"])
    .add_schema(
        schema=c_schema,
        shape="circle",
        center=["50%", "50%"],
        radius="80%",
        angleaxis_opts=opts.AngleAxisOpts(
            start_angle=90,
            min_=0,
            max_=360,
            is_clockwise=False,
            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_=50,
            interval=10,
            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.2),
        linestyle_opts=opts.LineStyleOpts(width=2),
    )
)
c.render_notebook()

        堆积图上一个文章弄过,自己去看就行。

        组合图:

from pyecharts import options as opts
from pyecharts.charts import Bar, Page,Line,Pie,Radar,Grid
bar = Bar(init_opts=opts.InitOpts(width='2000px',height='800px'))

x_data = ['2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021']
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis(
        "蒸发量",
        [87430,90912,96225,101885,107147,116390,105764,120215],
        yaxis_index=0,
        z=0,
        color="orange",    #稍微修改下颜色
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",
            name="同比增速(%)",
            name_location="center",
            name_gap=30,
            min_=-20,
            max_=20,
            axislabel_opts=opts.LabelOpts(font_size=14),
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="blank")
            ),
            
            splitline_opts=opts.SplitLineOpts(
                is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
            ),
        )
    )
    .set_global_opts(
        yaxis_opts=opts.AxisOpts(
            name="诊疗量(万人次)",#我们删除了降水保留了蒸发,这里改为蒸发量
            name_location="center",
            name_gap=60,
            min_=0,
            max_=130000,
            interval=50000,
            axislabel_opts=opts.LabelOpts(font_size=14),
            offset=0,    #这里是Y轴间距,由80改为0即两个Y轴重合,当然我们已经删除了原来的一个Y轴,所以相当于把第二Y轴左移
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="blank")
            ),
            
        ),
        title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量",pos_left="center",pos_top="top"),
        legend_opts=opts.LegendOpts(pos_left='40%',pos_bottom='89%'),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    )
)

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis(
        "同比增速(%)",
        [7.40,4.00,5.83,5.81,5.16,8.63,-9.13,13.66],
        symbol='triangle',
        symbol_size=15,
        yaxis_index=1,    #删了一个Y轴,Y轴索引由2改为1
        color="Magenta",
        label_opts=opts.LabelOpts(is_show=False),
    )
)

tick_label=['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]
bar1=(
     Bar()
     .add_xaxis(tick_label)
     .add_yaxis("供应商A",data1,stack="stack1",xaxis_index=1,yaxis_index=2,color=" cyan")
     .add_yaxis("供应商B",data2,stack="stack1",xaxis_index=1,yaxis_index=2,color="orange")
     .set_global_opts(title_opts=opts.TitleOpts(title="全国药店中药饮片供应商占比",pos_left="40%",pos_top="50%"),
                     legend_opts=opts.LegendOpts(is_show=False))
)

pie_demo=(
          Pie()
          .add("",[('20岁以下',2.2),('20-20岁',27.9),
                   ('31-40岁',56.2),('41-50岁',10.9),
                   ('51岁以上',2.8)],center=["20%","80%"],radius=[50,80], label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
          .set_global_opts(title_opts=opts.TitleOpts(title="中药材消费者画像",pos_left="15%",pos_top="55%"),
                           legend_opts=opts.LegendOpts(is_show=False))
          
)

data=[[33,45,3,9,10]]
c_schema = [
        {"name": "化学药", "max": 50, "min": 0, "color": 'black', "font_size": 18},
        {"name": "中成药", "max": 50, "min": 0, "color": 'black', "font_size": 18},
        {"name": "生物制品", "max": 50, "min": 0, "color": 'black', "font_size": 18},
        {"name": "中药饮片", "max": 50, "min": 0, "color": 'black', "font_size": 18},
        {"name": "保健品", "max": 50, "min": 0, "color": 'black', "font_size": 18}
    ]
c = (
    Radar()
    .set_colors(["#4587E7"])
    .add_schema(
        schema=c_schema,
        shape="circle",
        center=["50%", "50%"],
        radius="80%",
        angleaxis_opts=opts.AngleAxisOpts(
            start_angle=90,
            min_=0,
            max_=360,
            is_clockwise=False,
            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_=50,
            interval=10,
            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.2),
        linestyle_opts=opts.LineStyleOpts(width=2),
    )
)

barr = bar.overlap(line)

grid=(
     Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
     .add(barr,grid_opts=opts.GridOpts(pos_bottom="60%"),is_control_axis_index=True)
     .add(pie_demo,grid_opts=opts.GridOpts(pos_top="58%",pos_right="65%"))
     .add(bar1,grid_opts=opts.GridOpts(pos_top="58%",pos_bottom="5%",pos_right="35%",pos_left="40%"),is_control_axis_index=True)   
)
grid.render_notebook()

        技术有限,堆积图还是弄不过去,等知道原因后再得文章进行修改(悲)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值