使用Pyecharts渲染图表(1)

使用pyecharts进行开发前,开发者需要先在本地计算机安装pyecharts。

安装步骤:打开Anaconda Prompt工具,通过pip清华镜像源安装pyecharts,在命令行输入:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts 


Pyecharts官网:

echarts官网:https://www.echartsjs.com/index.html
pyecharts官网:https://pyecharts.org/#/zh-cn/intro
pyecharts众多图表示例代码:https://gallery.pyecharts.org/#/README


使用Pyecharts完成以下任务:

需求一:请用一张独立画布,柱形图和折线图融合在同一个坐标系展示表1数据

导入所需模块

#导入所需模块
from pyecharts import options as opts
#导入需要用到的图类表(柱形图,组合图,折线图)
from pyecharts.charts import Bar, Grid, Line  

设置共享的x轴(x_data)以及为柱形图表Bar实例填充数据

x_data = ["{}月".format(i) for i in range(2014,2022)]  
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis(
        "诊疗量(万人次)",
        [87430,90912,96225,101885,107147,116390,105764,120215],
        yaxis_index=0,        #表示y轴的索引,用于拥有多个y轴的单图表中
        color="#d14a61",      #柱形图颜色
    )

 自定义左纵坐标轴和右纵坐标轴

 .extend_axis(
        yaxis=opts.AxisOpts(
            name="诊疗量(万人次)",
            type_="value",         #'value': 数值轴,适用于连续数据
            min_=0,                #设置左纵坐标轴的刻度值最低范围为0
            max_=125000,           #设置左纵坐标轴的刻度值最高范围为125000
            interval=25000,        #设置左纵坐标轴的刻度值范围的等分间隔为25000
            position="left",       #自定义在左纵坐标轴
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61")   #坐标轴数值颜色
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} "),   
        )
    )
    
    .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",         #'value': 数值轴,适用于连续数据
            name="同比增速(%)",  
            min_=-20,              #设置右纵坐标轴的刻度值最低范围为-20
            max_=20,               #设置右纵坐标轴的刻度值最高范围为20
            position="right",      #自定义在右坐标轴
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#675bba")    #坐标轴数值颜色
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} %"),   
            splitline_opts=opts.SplitLineOpts(
                is_show=False, linestyle_opts=opts.LineStyleOpts(opacity=1) #SplitLineOpts:分割线配置项,is_show表示是否显示分割线
            ),
        )
    )

坐标轴类型(type):

 'value': 数值轴,适用于连续数据。

 'category': 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。

'time': 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同。

'log': 对数轴。适用于对数数据。 


 设置系统配置项

#系统配置项
    .set_series_opts(
        itemstyle_opts={"opacity":0.5})     #设置柱形图的透明度

  设置全局配置项

#全局配置项
    .set_global_opts(
        yaxis_opts=opts.AxisOpts(
            name="诊疗量(万人次)",   #坐标轴名称
            min_=0,                    #设置左纵坐标轴的刻度值最低范围为0
            max_=125000,               #设置左纵坐标轴的刻度值最高范围为125000
            interval=25000,            #设置左纵坐标轴的刻度值范围的等分间隔为25000
            position="left",    #将坐标轴定义在左侧
            offset=0,
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#5793f3")
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} "),
        ),
        title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量"),    #标题配置项
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross" ), 
        #提示框配置项
            # axis_pointer_type:指示器类型
            # 'line':直线指示器
            # 'shadow':阴影指示器
            # 'none':无指示器
            # 'cross':十字准星指示器。其实是种简写,表示启用两个正交的轴的 axisPointer。
        legend_opts=opts.LegendOpts(pos_left="65%"),)       #图例配置项,将图例组件设置离容器左侧的距离为65%
)

为折线图表Line实例填充数据

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis(
        "同比增速(%)",   #右坐标轴名称
        [7.40,4.00,5.83,5.81,5.16,8.63,-9.13,13.66],
        yaxis_index=2,
        color="#675bba",     
        label_opts=opts.LabelOpts(is_show=True),       #标签配置项,是否显示标签
        symbol='triangle',   #表示将折线图上的标记设为三角形
        symbol_size=15,      #表示标记的大小
    )
)

symbol:表示标记的图形

'circle'(圆形)、'rect'(矩形)、'roundRect'(圆角矩形)、'triangle'(三角形)、'diamond'(菱形)、'pin'( 大头针)、'arrow'(箭头)、'none'(无)。


创建组合表Grid

#创建组合图表
bar.overlap(line)
grid = Grid()
#pos_left="5%", pos_right="20%":grid 组件离容器左侧或右侧的距离。 is_control_axis_index=True:是否由自己控制 Axis 索引
grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True) 

渲染图表

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

 渲染图表有两个方法:


rander()方法用于将图表渲染到HTML文件,语法如下:

render(self,path="render.html",template name="simple_chart.htmI’,env=None,**kwargs)

rander()中的参数 path表示生成文件的路径,默认为render.html;template_name 表示模板的路径。render()方法会返回 HTML文件的路径字符串。


rander_notebook()方法用于将图表渲染于Jupyter Notebook工具中,它无需接受任何参数。语法如下:

bar.render_notebok()    #bar为图表类型,bar(柱形图)


完整代码:
#导入所需模块
from pyecharts import options as opts
#导入需要用到的图类表(柱形图,组合图,折线图)
from pyecharts.charts import Bar, Grid, Line    

x_data = ["{}月".format(i) for i in range(2014,2022)]  
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis(
        "诊疗量(万人次)",
        [87430,90912,96225,101885,107147,116390,105764,120215],
        yaxis_index=0,        #表示y轴的索引,用于拥有多个y轴的单图表中
        color="#d14a61",      #柱形图颜色
    )
    
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="诊疗量(万人次)",
            type_="value",         #'value': 数值轴,适用于连续数据
            min_=0,                #设置左纵坐标轴的刻度值最低范围为0
            max_=125000,           #设置左纵坐标轴的刻度值最高范围为125000
            interval=25000,        #设置左纵坐标轴的刻度值范围的等分间隔为25000
            position="left",       #自定义在左纵坐标轴
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61")   #坐标轴数值颜色
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} "),   
        )
    )
    
    .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",         #'value': 数值轴,适用于连续数据
            name="同比增速(%)",  
            min_=-20,              #设置右纵坐标轴的刻度值最低范围为-20
            max_=20,               #设置右纵坐标轴的刻度值最高范围为20
            position="right",      #自定义在右坐标轴
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#675bba")    #坐标轴数值颜色
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} %"),   
            splitline_opts=opts.SplitLineOpts(
                is_show=False, linestyle_opts=opts.LineStyleOpts(opacity=1) #SplitLineOpts:分割线配置项,is_show表示是否显示分割线
            ),
        )
    )
#系统配置项
    .set_series_opts(
        itemstyle_opts={"opacity":0.5})     #设置柱形图的透明度
#全局配置项
    .set_global_opts(
        yaxis_opts=opts.AxisOpts(
            name="诊疗量(万人次)",   #坐标轴名称
            min_=0,                    #设置左纵坐标轴的刻度值最低范围为0
            max_=125000,               #设置左纵坐标轴的刻度值最高范围为125000
            interval=25000,            #设置左纵坐标轴的刻度值范围的等分间隔为25000
            position="left",    #将坐标轴定义在左侧
            offset=0,
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#5793f3")
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} "),
        ),
        title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量"),    #标题配置项
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross" ), 
        #提示框配置项
            # axis_pointer_type:指示器类型
            # 'line':直线指示器
            # 'shadow':阴影指示器
            # 'none':无指示器
            # 'cross':十字准星指示器。其实是种简写,表示启用两个正交的轴的 axisPointer。
        legend_opts=opts.LegendOpts(pos_left="65%"),)       #图例配置项,将图例组件设置离容器左侧的距离为65%
)

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis(
        "同比增速(%)",   #右坐标轴名称
        [7.40,4.00,5.83,5.81,5.16,8.63,-9.13,13.66],
        yaxis_index=2,
        color="#675bba",     
        label_opts=opts.LabelOpts(is_show=True),       #标签配置项,是否显示标签
        symbol='triangle',   #表示将折线图上的标记设为三角形
        symbol_size=15,      #表示标记的大小
    )
)

#创建组合图表
bar.overlap(line)
grid = Grid()
#pos_left="5%", pos_right="20%":grid 组件离容器左侧或右侧的距离。 is_control_axis_index=True:是否由自己控制 Axis 索引
grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True) 

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

运行结果:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值