使用pyecharts绘制图表

  • 第一步:打开终端在anaconda prompt命令行工具下,通过pip清华镜像源安装pyecharts
  • 第二步:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts  

学习的官网地址:

主要任务:

柱形图和折线图的组合图表 

首先导入所需要的库

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

第一个库是使用 options 配置项,在 pyecharts 中,一切皆 Options。

第二个库导入的有三个分别是Bar、Grid、Line意思分别是柱形图、组合图表、折线图。

准备共享x轴的数据  x轴的值为列表,包含每个年份(2014-2021)

bar = Bar()  初始化

定义数据为列表类型

x_data = ["{}年".format(i) for i in range(2014, 2022)]
bar = (
    Bar()
    .add_xaxis(x_data)

第一个y轴的数据。左y轴的值、标签、颜色、透明度。

LabelOpts对应class LabelOpts 中的 类名,label_opts需要把LabelOpts中的L与O小写前面加_(下划线)即可,以下皆是如此。

.add_yaxis(
        "诊疗量(万人次)",      # 轴名      
        [87430,90912,96225,101885,107147,116390,105764,120215],   # Y轴数据
        color="#5793f3", )  # 颜色
    # 增加系列配置
    .set_series_opts(
        itemstyle_opts={"opacity":0.5},  #透明度
        label_opts = opts.LabelOpts(is_show = False))  # 是否显示标签

左纵坐标  (AxisOpts:坐标轴配置项)

.extend_axis添加扩展轴,并且通过往yaxis参数传参实现y轴的扩展

.extend_axis(
        yaxis=opts.AxisOpts(
            name="诊疗量(万人次)",  # 坐标名
            min_=70000,   # 设定最小值
            max_=130000,  # 设定最大值
            position="left",  # 自定义坐标轴是左侧 
            axislabel_opts=opts.LabelOpts(formatter="{value}"),    # 设定坐标轴数值
        )
    )

右纵坐标

.extend_axis(
        yaxis=opts.AxisOpts(
            name="同比增速(%)",   # 坐标名
            min_=-20,               # 设定最小值
            max_=20,                # 设定最大值
            position="right",       # 自定义坐标轴是右侧
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61")
            ),    # 自定义坐标轴数值的颜色
            axislabel_opts=opts.LabelOpts(formatter="{value} %"),   # 设定坐标轴数值+单位
        )
    )

set_global_opts:全局配置设置 

.set_global_opts(
        yaxis_opts=opts.AxisOpts(
            name="诊疗量(万人次)",    # 坐标名
            min_=70000,                 # 设定最小值
            max_=130000,                # 设定最大值
            position="left",            # 自定义坐标轴是左侧
            offset=0,                   #Y 轴相对于默认位置的偏移,在相同的 position 上有多个 Y 轴的时候有用。
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#5793f3")   # 自定义坐标轴数值的颜色
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value}"),      # 设定坐标轴数值
        ),                             
        # 标题配置项  title:主标题    副标题:subtitle    pos_right:工具栏组件离容器右侧的距离。
        title_opts=opts.TitleOpts(title="中国中医类医疗卫生机构诊疗量", subtitle="2014-2021年",pos_right=5), 
        #  # 提示框配置项  
        # trigger:触发类型。可选:
                      #'item': 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
                      # 'axis': 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
                      # 'none': 什么都不触发
        #axis_pointer_type:指示器类型。可选:
                      # 'line':直线指示器
                      # 'shadow':阴影指示器
                      # 'none':无指示器
                      # 'cross':十字准星指示器。其实是种简写,表示启用两个正交的轴的 axisPointer。
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),  
    )
)

 绘制组合图表中的折线图

line = Line()  初始化

line = (
    Line()  
    .add_xaxis(x_data)    # x轴数据
    .add_yaxis(
        "同比增速(%)",  # 轴名 
        [7.40,4.00,5.83,5.81,5.16,8.63,-9.13,13.66],   # y轴数据
        # 指定哪些 yAxis 被控制。如果缺省则控制所有的 y 轴。
        # 如果设置为 false 则不控制任何y轴。如果设置成 3 则控制 axisIndex 为 3 的 y 轴。
        # 如果设置为 [0, 3] 则控制 axisIndex 为 0 和 3 的 y 轴。
        yaxis_index=2,    # 索引
        color="#675bba",  # 设置折线的颜色
        label_opts=opts.LabelOpts(is_show=True),   # 是否显示标签
        #  图形的z值,控制图形的前后顺序,z值大的图形会展示在z值小的前面 默认的z值为2.
        z=3,
    )
)

创建组合图表 

grid = Grid()
grid.add(bar, opts.GridOpts(pos_left="10%", pos_right="10%"), is_control_axis_index=True)
grid.render()
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件也可以传入路径参数,如 bar.render("mycharts.html") bar.render() 
# 如要在notebook里面显示图表则:bar.overlap(line).render_notebook()
bar.overlap(line).render_notebook()

render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件也可以传入路径参数,如 bar.render("mycharts.html") bar.render() 

如要在notebook里面显示图表则:bar.overlap(line).render_notebook()

完整代码如下:

# 导入所需的库 
# 第一个库是使用 options 配置项,在 pyecharts 中,一切皆 Options。
# 第二个库导入的有三个分别是Bar、Grid、Line意思分别是柱形图、组合图表、折线图
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line

#x轴的值为列表,包含每个年份
# bar = Bar()  初始化   
# 定义数据为列表类型
x_data = ["{}年".format(i) for i in range(2014, 2022)]
# 柱形图
bar = (
    Bar()
    .add_xaxis(x_data)
#第一个y轴的数据。左y轴的值、标签、颜色、透明度。
    .add_yaxis(
        "诊疗量(万人次)",      # 轴名      
        [87430,90912,96225,101885,107147,116390,105764,120215],   # Y轴数据
        color="#5793f3", )  # 颜色
    # 增加系列配置
    .set_series_opts(
        itemstyle_opts={"opacity":0.5},  #透明度
        label_opts = opts.LabelOpts(is_show = False))  # 是否显示标签

#左纵坐标  (AxisOpts:坐标轴配置项)
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="诊疗量(万人次)",  # 坐标名
            min_=70000,   # 设定最小值
            max_=130000,  # 设定最大值
            position="left",  # 自定义坐标轴是左侧 
            axislabel_opts=opts.LabelOpts(formatter="{value}"),    # 设定坐标轴数值
        )
    )
#右纵坐标
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="同比增速(%)",   # 坐标名
            min_=-20,               # 设定最小值
            max_=20,                # 设定最大值
            position="right",       # 自定义坐标轴是右侧
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61")
            ),    # 自定义坐标轴数值的颜色
            axislabel_opts=opts.LabelOpts(formatter="{value} %"),   # 设定坐标轴数值+单位
        )
    )
# set_global_opts:全局配置设置
    .set_global_opts(
        yaxis_opts=opts.AxisOpts(
            name="诊疗量(万人次)",    # 坐标名
            min_=70000,                 # 设定最小值
            max_=130000,                # 设定最大值
            position="left",            # 自定义坐标轴是左侧
            offset=0,                   #Y 轴相对于默认位置的偏移,在相同的 position 上有多个 Y 轴的时候有用。
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#5793f3")   # 自定义坐标轴数值的颜色
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value}"),      # 设定坐标轴数值
        ),                             
        # 标题配置项  title:主标题    副标题:subtitle    pos_right:工具栏组件离容器右侧的距离。
        title_opts=opts.TitleOpts(title="中国中医类医疗卫生机构诊疗量", subtitle="2014-2021年",pos_right=5), 
        #  # 提示框配置项  
        # trigger:触发类型。可选:
                      #'item': 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
                      # 'axis': 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
                      # 'none': 什么都不触发
        #axis_pointer_type:指示器类型。可选:
                      # 'line':直线指示器
                      # 'shadow':阴影指示器
                      # 'none':无指示器
                      # 'cross':十字准星指示器。其实是种简写,表示启用两个正交的轴的 axisPointer。
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),  
    )
)
# 折线图
# line = Line()  初始化
line = (
    Line()  
    .add_xaxis(x_data)    # x轴数据
    .add_yaxis(
        "同比增速(%)",  # 轴名 
        [7.40,4.00,5.83,5.81,5.16,8.63,-9.13,13.66],   # y轴数据
        # 指定哪些 yAxis 被控制。如果缺省则控制所有的 y 轴。
        # 如果设置为 false 则不控制任何y轴。如果设置成 3 则控制 axisIndex 为 3 的 y 轴。
        # 如果设置为 [0, 3] 则控制 axisIndex 为 0 和 3 的 y 轴。
        yaxis_index=2,
        color="#675bba",  # 设置折线的颜色
        label_opts=opts.LabelOpts(is_show=True),   # 是否显示标签
        #  图形的z值,控制图形的前后顺序,z值大的图形会展示在z值小的前面 默认的z值为2.
        z=3,
    )
)
# 创建组合图表
grid = Grid()
grid.add(bar, opts.GridOpts(pos_left="10%", pos_right="10%"), is_control_axis_index=True)
grid.render()
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件也可以传入路径参数,如 bar.render("mycharts.html") bar.render() 
# 如要在notebook里面显示图表则:bar.overlap(line).render_notebook()
bar.overlap(line).render_notebook()

 饼图

# 导入所需的库 
# 第一个库是使用 options 配置项,在 pyecharts 中,一切皆 Options。
# 第二个库导入的是绘制饼图的库
from pyecharts import options as opts
from pyecharts.charts import Pie

# pie = Pir()   初始化
pie = (
    Pie()
    .add("",[('化学药',33),('中成药',45),('生物制品',3),('保健品',9),('中药饮片',6),('其他',4)])  # 自定义标签与数据
    .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])                   # 自定义标签颜色(一一对应)
    .set_global_opts(title_opts=opts.TitleOpts(title="饼图展示"))                                 # 设置标题(全局配置项:set_global_opts)
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))                             # 标签配置项LabelOpts 标签:数值
)
pie.render_notebook()

环图

# 导入所需的库 
# 第一个库是使用 options 配置项,在 pyecharts 中,一切皆 Options。
# 第二个库导入的是绘制饼图的库
from pyecharts import options as opts
from pyecharts.charts import Pie

# pie = Pir()   初始化
x_data = ['化学药','中成药','生物制品','保健品','中药饮片','其他']
y_data = [335, 310, 234, 135, 1548]

P = (
    Pie()
    .add("",
         data_pair=[list(z) for z in zip(x_data, y_data)], # 导入数据
         #极坐标系的半径。可以为如下类型:
                        # number:直接指定外半径值。
                        # string:例如,'20%',表示外半径为可视区尺寸(容器高宽中较小一项)的 20% 长度。
                        # Array.<number|string>:数组的第一项是内半径,第二项是外半径。每一项遵从上述 number string 的描述。
        radius=["40%", "75%"],    
        label_opts=opts.LabelOpts(is_show=False, position="center"),   # 设置:是否显示标签、标签位置
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="环图展示"))      # 设置标题
    .set_series_opts(
        tooltip_opts=opts.TooltipOpts(
        # 提示框配置项  
        # trigger:触发类型。可选:
                      #'item': 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
                      # 'axis': 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
                      # 'none': 什么都不触发
        trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"),
        # 标签配置项LabelOpts 标签:数值
        label_opts=opts.LabelOpts(formatter="{b}: {c}"),    
        
    )
)
P.render_notebook()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值