手把手教你Pyecharts——以绘制收入成本图为例

Python实现可视化的库非常多,比较常用的有:

  • Matplotlib:使用最广泛的绘图库,可满足大部分基础绘图需求。与Pandas结合非常好。

  • Seaborn:Seaborn建立在Matplotlib之上,与Matplotlib主要的区别是Seaborn的默认样式以及更美观、更现代的调色板设计。

  • ggplot:ggplot与Pandas紧密集成,操作更简单,但是牺牲了复杂性。

  • Plotly:Plotly提供了一些在大多数库中找不到的图表,如等高线图,树状图和三维图表。

  • Geoplotlib:Geoplotlib是用于创建地图和绘制地理数据的工具箱

  • Pyecharts:Echarts 是百度基于JavaScript 开源的可视化图表库,Pyecharts是一款将Python与echarts结合的强大的数据可视化工具,主要优势是支持的图形样式非常全,而且有丰富的主题可供选择,样式美观。

本文主要介绍Pyecharts的使用。

官网:

https://pyecharts.org/#/zh-cn/intro

特性:

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

一、安装

pip install pyecharts

二、基本图形的绘制

【例1】某公司2017-2021年的收入分别为:36000元、38000元、42000元、51000元、53000元,成本分别为:31000元、32000元、36000元、40000元、41000元。使用Pyecharts绘制2017-2021年收入成本柱状图。

第一步,导入相关模块

图表的类在charts,可根据图表类型导入。

from pyecharts.charts import Bar #导入柱状图

第二步,创建Bar实例

bar = Bar()

第三步,添加数据

bar.add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) #设置x轴
bar.add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  #设置y轴
bar.add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])  #设置y轴

第四步,保存html文件

bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

render()默认将会在根目录下生成一个 render.html 的文件,也可以传入路径参数,设置文件保存位置,如 bar.render(r"C:\my_first_chart.html"),文件用浏览器打开。

全套代码为:

from pyecharts.charts import Bar #导入柱状图 

#创建bar实例
bar = Bar()

#添加数据
bar.add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
bar.add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
bar.add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])  

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I5tt57Yt-1656552375288)(https://files.mdnice.com/user/29206/b2174322-d8c5-4315-b8b5-d96078e1615f.png)]

pyecharts方法支持链式调用。

上述代码可改写成:

from pyecharts.charts import Bar

bar = (
    Bar()
    .add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) #设置x轴
    .add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  #设置y轴
    .add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])  #设置y轴
     )
bar.render()

三、配置项

在 pyecharts中,一切皆配置(options)。pyecharts提供了丰富的配置项,包括全局配置项系列配置项

Pyecharts配置项引入方法:

from pyecharts import options as opts

(一)初始化配置

(1)先在初始化图表类型时进行初始化配置

init_opts=opts.InitOpts()

常用参数如下表所示

常用参数说明
widthstr,图表画布宽度,如:width=‘900px’
heightstr,图表画布高度,如:height=‘500px’
chart_idstr,图表id,图表唯一标识
theme图表主题

(2)进行主题定制

pyecharts内置提供了多种不同风格的主题,只需引入主题类型即可使用,主题类型引入方法:

from pyecharts.globals import ThemeType

设置主题方法:

theme=ThemeType.主题风格

内置主题如表所示:

CHALK粉笔风
DARK暗黑风
ESSOS厄索斯大陆
INFOGRAPHIC信息图
LIGHT明亮风格
MACARONS马卡龙
PURPLE_PASSION紫色
ROMA石榴
ROMANTIC浪漫风
SHINE闪耀风
VINTAGE复古风
WALDEN瓦尔登湖
WESTEROS维斯特洛大陆
WHITE洁白风
WONDERLAND仙境
HALLOWEEN万圣节前夜

【例2】在例1图形的基础上,配置宽度为800px,高度为450px,主题为LIGHT

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

#创建bar实例,初始化配置,设置主题风格
bar = Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))

#添加数据
bar.add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
bar.add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
bar.add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])  

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

也可采用链式调用,代码如下:

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

bar = (
	Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))
    .add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
    .add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
    .add_yaxis("成本", [31000, 32000, 36000, 40000, 41000]) 
    )

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

(二)全局配置项

全局配置项通过set_global_opts 方法设置

1、标题配置项

调用标题配置项:

title_opts=opts.TitleOpts()

常用参数如下表所示:

常用参数说明
title主标题
subtitle副标题
pos_left标题组件离容器左侧的距离
pos_right标题组件离容器右侧的距离
pos_top标题组件离容器上侧的距离
pos_bottom标题组件离容器下侧的距离

【例3】在例2图形的基础上,设置主标题为"收入成本图",副标题为"2017-2021年"

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

#创建bar实例,初始化配置,设置主题风格
bar = Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))

#添加数据
bar.add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
bar.add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
bar.add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])  

#设置全局配置项
bar.set_global_opts(title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'))

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

也可采用链式调用,代码如下:

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

bar = (
	Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))
    .add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
    .add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
    .add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])
    .set_global_opts(title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'))
    )

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

2、图例设置项

调用图例配置项:

legend_opts=opts.LegendOpts()

常用参数如下表所示:

常用参数说明
type_图例的类型,可选:默认’plain’,代表普通图例,‘scroll’,代表可滚动翻页的图例
is_show是否显示图例组件,默认为True
pos_left图例组件离容器左侧的距离
pos_right图例组件离容器右侧的距离
pos_top图例组件离容器上侧的距离
pos_bottom图例组件离容器下侧的距离
orient图例列表的布局朝向,可选:默认’horizontal’水平,'vertical’垂直

3、坐标轴配置项

调用x、y轴配置项:

xaxis_opts=opts.AxisOpts()
yaxis_opts=opts.AxisOpts()

常用参数如下表所示:

常用参数说明
name坐标轴名称
is_show是否显示坐标轴,默认为True
is_inverse是否反向坐标轴,默认为False
name_location坐标轴名称显示位置,可选:‘start’,‘middle’,‘center’,‘end’,默认’enda’
name_gap坐标轴名称与轴线之间的距离,默认15

【例4】在例3图形的基础上,设置x轴名称分别为”年份“。

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

#创建bar实例,初始化配置,设置主题风格
bar = Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))

#添加数据
bar.add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
bar.add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
bar.add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])  

#设置全局配置项
bar.set_global_opts(title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'),
                    xaxis_opts=opts.AxisOpts(name='年份'))

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

也可采用链式调用,代码如下:

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

bar = (
	Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))
    .add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
    .add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
    .add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])
    .set_global_opts(
        title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'),
        xaxis_opts=opts.AxisOpts(name='年份'))
        )

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

4、工具箱配置项

调用工具箱配置项:

toolbox_opts=opts.ToolboxOpts()

常用参数如下表所示:

常用参数说明
is_show是否显示工具箱组件,默认False
orient工具箱的布局朝向,可选:默认’horizontal’水平,'vertical’垂直
pos_left工具箱组件离容器左侧的距离
pos_right工具箱组件离容器右侧的距离
pos_top工具箱组件离容器上侧的距离
pos_bottom工具箱组件离容器下侧的距离

通过工具箱可进行图形下载、区域缩放、图形转换等操作。

【例5】在例4图形的基础上,添加一个工具箱

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

#创建bar实例,初始化配置,设置主题风格
bar = Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))

#添加数据
bar.add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
bar.add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
bar.add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])  

#设置全局配置项
bar.set_global_opts(title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'),
                    xaxis_opts=opts.AxisOpts(name='年份'),
                    toolbox_opts=opts.ToolboxOpts(is_show=True))

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

(1)点击工具箱”数据视图“,可查看数据


(2)点击工具箱”切换为折线图“,图形显示为折线图。

也可采用链式调用,代码如下:

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

bar = (
	Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))
    .add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
    .add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
    .add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])
    .set_global_opts(
        title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'),
        xaxis_opts=opts.AxisOpts(name='年份'),
        toolbox_opts=opts.ToolboxOpts(is_show=True))
        )

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

(三)系列配置项

系列配置项通过set_series_opts方法设置

1、标签配置项

调用标签配置项:

label_opts=opts.LabelOpts()

常用参数如下表所示:

常用参数说明
is_show是否显示标签,默认True
positon标签位置,可选: ‘top’,‘left’,‘right’,‘bottom’,‘inside’,‘insideLeft’,‘insideRight’
color标签颜色
font_family标签字体
font_size标签字体大小
#label_opts表示标签选项参数
#options.LabelOpts表示配置标签选项的方法,可以配置颜色、字体、大小等
label_opts=options.LabelOpts(positon='right'))

【例6】在例5图形的基础上,将标签设置为在柱形内。

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

#创建bar实例,初始化配置,设置主题风格
bar = Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))

#添加数据
bar.add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
bar.add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
bar.add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])  

#设置全局配置项
bar.set_global_opts(title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'),
                    xaxis_opts=opts.AxisOpts(name='年份'),
                    toolbox_opts=opts.ToolboxOpts(is_show=True))

#设置系列配置项
bar.set_series_opts(label_opts=opts.LabelOpts(position='inside'))

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

也可采用链式调用,代码如下:

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

bar = (
	Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))
    .add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
    .add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
    .add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])
    .set_global_opts(
        title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'),
        xaxis_opts=opts.AxisOpts(name='年份'),
        toolbox_opts=opts.ToolboxOpts(is_show=True))
    .set_series_opts(label_opts=opts.LabelOpts(position='inside')) 
        )

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

四、坐标轴翻转

可使用reversal_axis()函数进行坐标轴翻转,纵向柱状图进行翻转后则生成横向柱状图。

【例7】在例6图形的基础上,对纵向柱状图进行翻转,生成横向柱状图

from pyecharts.charts import Bar #导入柱状图
from pyecharts import options as opts #导入配置项
from pyecharts.globals import ThemeType  #导入主题类型

bar = (
	Bar(init_opts=opts.InitOpts(width='800px',height='450px',theme=ThemeType.LIGHT))
    .add_xaxis(["2017年", "2018年", "2019年", "2020年", "2021年"]) 
    .add_yaxis("收入", [36000, 38000, 42000, 51000, 53000])  
    .add_yaxis("成本", [31000, 32000, 36000, 40000, 41000])
    .set_global_opts(
        title_opts=opts.TitleOpts(title='收入成本图',subtitle='2017-2021年'),
        xaxis_opts=opts.AxisOpts(name='年份'),
        toolbox_opts=opts.ToolboxOpts(is_show=True))
    .set_series_opts(label_opts=opts.LabelOpts(position='inside')) 
    .reversal_axis()
        )

#生成html文件
bar.render() # 如果不指定路径,则默认在当前路径下生成一个render.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值