前言
文档位于 pyecharts - A Python Echarts Plotting Library built with love.
示例位于 Document
echarts
官网 https://www.echartsjs.com/zh/index.html
1. 简介
1.1 Pyecharts 是什么
- Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,Pyecharts 诞生了
- 可以理解为 Pyecharts 是实现 Echarts 与 Python 对接的一个库
1.2 Pyecharts 特性
- 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
- 囊括了 30+ 种常见图表,应有尽有
- 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
- 可轻松集成至 Flask,Django 等主流 Web 框架
- 高度灵活的配置项,可轻松搭配出精美的图表
- 详细的文档和示例,帮助开发者更快的上手项目
- 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持
2. 安装
2.1 Pyecharts 版本
Pyecharts一共有三个大版本:V0.X 、 V1.X 、V2.X ,版本之间差别比较大!,v0.5.X 和 v1 间不兼容,v1 是一个全新的版本,详见 ISSUE#892,ISSUE#1033。
支持 Python2.7,3.4+
经开发团队决定,0.5.x 版本将不再进行维护,0.5.x 版本代码位于 05x 分支,文档位于 05x-docs.pyecharts.org。
仅支持 Python3.6+
新版本系列将从 v1.0.0 开始,文档位于 pyecharts.org,即本文档。
支持 Python3.6 ~ Python 3.11
新版本系列从 Echarts 4 切换到 Echarts 5
宏哥本系列用的 Pyecharts 版本是2.0.4 ! 如下图所示:
谨记:不要装错啦!不同版本有些图参数设置不一样!
2.2安装
(1)直接 pip 安装:
pip(3) install pyecharts==2.0.4
显示successfully,表示安装成功!!!
但宏哥实测时发现,由于墙的原因,下载时会出现断线和速度过慢的问题导致下载失败,所以建议通过清华镜像来进行下载:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts
(2)源码安装
$ git clone https://github.com/pyecharts/pyecharts.git
$ cd pyecharts
$ pip install -r requirements.txt
$ python setup.py install
# 或者执行 python install.py
(3)查看已安装版本:
import pyecharts
print(pyecharts.__version__)
2.3 常用安装方式
pip install xxx(库名)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ xxx(库名)
常用的国内镜像源:
- 清华大学镜像源:https://pypi.tuna.tsinghua.edu.cn/simple/
- 华为镜像源: https://mirrors.huaweicloud.com/
- 阿里云镜像源:http://mirrors.aliyun.com/pypi/simple/
- 豆瓣镜像源:http://pypi.douban.com/simple/
- 中国科学技术大学镜像源:ttp://http://pypi.mirrors.ustc.edu.cn/simple/
- 腾讯开源镜像:http://mirrors.cloud.tencent.com/pypi/simple
- 网易源镜像:http://mirrors.163.com/
- 搜狐源镜像:http://mirrors.sohu.com/
2.4 安装地图文件(可选)
后期涉及到地图部分的可视化,所以这里就把地图包先装上(如果自己的可视化不包含地图,可以先不装,需要的时候再装也可以):
- 全球国家地图: echarts-countries-pypkg
- 中国省级地图: echarts-china-provinces-pypkg
- 中国市级地图: echarts-china-cities-pypkg
pip install pyecharts
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
3.pyecharts常用的方法
(1)add(...)主要方法,用于加载要绘制的图表数据和设置各种配置。
(2)show_config();打印输出图标的所有配置项信息
(3)render(“xxx.html”):用于绘制生成html文件,默认在根目录下生成一个html文件,当未指定要绘制的文件名称,默认render.html。支持设置文件保存位置。
4.绘制图表的基本步骤
(1)初始化图表类型
Xxx=图表类型()
chart_name = Type() #初始化具体类型图表
例如,绘制柱图
mybar=Bar()
(2)添加配置项
xxx.add(.....)
add() #加数据及配置项,基本都在操作这个函数
(3)生成html文件
xxx.render(“xxx.html”)
render() #生成 .html文件,可设置文件类型
5. 图表类型
5.1 直角坐标系图表
- Bar: 柱状图/条形图
- Boxplot: 箱形图
- EffectScatter: 连清特效散点图
- HeatMap: 热力图
- Kline/Candlestick: K线图
- Line: 折线/面积图
- PictorialBar: 象形柱状图
- Scatter: 散点图
- Overlap: 层查多图
5.2 基本图表
- Calendar: 日历图
- Funnel: 漏斗图
- Gauge: 仪表盘
- Graph: 关系图
- Liquid: 水球图
- Parallel: 平行坐标系
- Pie: 饼图
- Polar: 极坐标系
- Radar: 雷达图
- Sankey: 桑基图
- Sunburst: 旭日图
- ThemeRiver:主题河流图
- WordCloud: 词云图
5.3 树形图表
- Tree:树图
- TreeMap:矩形树图
5.4 地理图表
- Geo:地理坐标系
- Map:地图
- BMap:百度地图
5.5. 3D图表
- Bar3D: 3D柱状图
- Line3D: 3D折线图
- Scatter3D: 3D散点图
- Surface3D: 3D曲面图
- Lines3D:3D 路径图
- Map3D-三维地图
- GraphGL-GL关系图
5.6. 组合图表
- Grid: 并行多图
- Page: 顺序多图
- Tab: 选项卡多图
- Timeline: 时间线轮播多图
5.7. HTML组件
- Component 通用配置项
- Table: 表格
- Image: 图像
6. 绘图输出
6.1 输出到 jupyter notebook
# 将图形渲染到 notebook
def render_notebook()
6.2 输出到 html 文件
def render(
# 生成图片路径
path: str = "render.html",
# 模板路径
template_name: str = "simple_chart.html",
# jinja2.Environment 类实例,可以配置各类环境参数
env: Optional[Environment] = None,
)
7.图形设置
图形的设置方法都是同宗同源,大致主要为以下几种:
1、设置颜色:
.add_yaxis( "商家A", Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color='red')
2、设置间距与宽度:通过添加gap百分比,默认为类目间距的 20%
.add_yaxis('门店', data2,category_gap="50%")
3、设置是否显示数据:通过添加label_opts = opts.LabelOpts(is_show=False)
.add_yaxis('MSE', data1,label_opts = opts.LabelOpts(is_show=False))
4、设置平均线:
.add_yaxis('MSE', data1, markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")])
5、设置y轴显示数据的范围:在.set_global_opts里添加yaxis_opts=opts.AxisOpts(min_=0.35,)min_和max_
.set_global_opts(title_opts=opts.TitleOpts(title="MSE", subtitle="MSE与决策树数量关系图"), yaxis_opts=opts.AxisOpts(min_=0.35,max_=0.6))
6、设置datazoom_opts拉动条形轴:在.set_global_opts里添加datazoom_opts=[opts.DataZoomOpts()],
.set_global_opts(title_opts=opts.TitleOpts(title="MSE", subtitle="MSE与决策树数量关系图"), datazoom_opts=[opts.DataZoomOpts()], yaxis_opts=opts.AxisOpts(min_=0.33,))
7、设置画布大小:
Bar(init_opts=opts.InitOpts(width="720px", height="680px"))
8、设置图形中的竖直区域
.set_series_opts( markarea_opts=opts.MarkAreaOpts( data=[ opts.MarkAreaItem(x=(s,e)) for s,e in zip([10],[12]) ] ))
9、横坐标显示不全,倾斜横坐标
.set_global_opts(title_opts=opts.TitleOpts(title="天气情况"), xaxis_opts=opts.AxisOpts(name='日期',axislabel_opts={"rotate":50}))
8.五分钟上手
8.1简单示例
首先开始来绘制你的第一个图表。
1.参考代码
# coding=utf-8🔥
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-26
@author: 北京-宏哥
Project: Python可视化神器1-Pyecharts绘图详细教程
'''
# 3.导入模块
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis([2011,2012,2013,2014,2015,2016,2017])
bar.add_yaxis("产品销量", [58000,60200,63000,71000,84000,90500,107000])
bar.render()
2.运行代码后,在本地电脑的目录下找到文件,浏览器打开,如下图所示:
注:调用 render()
方法的时候会在本地生成一个 HTML 文件,默认会在当前目录生成 render.html 文件,同时也可以传入路径的参数,如 bar.render("mycharts.html")
,拿着这个 HTML 文件直接扔到浏览器中运行就能看到我们刚才创建的柱状图了。
8.2链式调用
链式调用的除了写法和前面的不同,作用完全相同,各位同学选择自己习惯的写法就行。
pyecharts 的方法都支持链式调用,就是上面这一段我们可以换成链式调用的写法,如下:
# coding=utf-8🔥
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-26
@author: 北京-宏哥
Project: Python可视化神器1-Pyecharts绘图详细教程
'''
# 3.导入模块
from pyecharts.charts import Bar
bar = (
Bar()
.add_xaxis([2017,2018,2019,2020,2021,2022,2023])
.add_yaxis("产品销量", [58000,60200,63000,71000,84000,90500,107000])
)
bar.render()
注: 这里链式,通俗点就是直接在Bar()后面用 .
直接调用,像调用函数一样,记得最外面有一个小括号哦。
8.3配置项
使用 options 配置项,在 pyecharts 中,一切皆 Options。
在使用 pyecharts 的时候,大量的配置是使用 options 完成的,下面看一个使用 options 进行主标题和副标题配置的小示例:
1.参考代码
# coding=utf-8🔥
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-26
@author: 北京-宏哥
Project: Python可视化神器1-Pyecharts绘图详细教程
'''
# 3.导入模块
from pyecharts.charts import Bar
from pyecharts import options as opts
# V1 版本开始支持链式调用
# 你所看到的格式其实是 `black` 格式化以后的效果
# 可以执行 `pip install black` 下载使用
bar = (
Bar()
.add_xaxis([2017,2018,2019,2020,2021,2022,2023])
.add_yaxis("产品销量", [58000,60200,63000,71000,84000,90500,107000])
.set_global_opts(title_opts=opts.TitleOpts(title="17 ~ 23年 xxx 公司 xx 产品销量图", subtitle="这里是副标题"))
# 或者直接使用字典参数
# .set_global_opts(title_opts={"text": "主标题", "subtext": "副标题"})
)
bar.render('render_1.html')
# 不习惯链式调用的开发者依旧可以单独调用方法
bar = Bar()
bar.add_xaxis([2017,2018,2019,2020,2021,2022,2023])
bar.add_yaxis("产品销量", [58000,60200,63000,71000,84000,90500,107000])
bar.set_global_opts(title_opts=opts.TitleOpts(title="17 ~ 23年 xxx 公司 xx 产品销量图", subtitle="这里是副标题"))
bar.render('render_1.html')
2.运行代码后,在本地电脑的目录下找到文件,浏览器打开,如下图所示:
如果想要将结果保存成图片,需要使用 snapshot-selenium 将结果渲染成图片,如果没有安装的话需要先安装,安装命令如下:
pip install snapshot_selenium
这里有一点需要注意,如果想要正常的使用 snapshot_selenium ,需要本地有和当前 Chrome 正常配套的 ChromeDriver ,如果没有,需要先安装。
8.4渲染成图片示例
1.参考代码
# coding=utf-8🔥
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-26
@author: 北京-宏哥
Project: Python可视化神器1-Pyecharts绘图详细教程
'''
# 3.导入模块
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
bar = (
Bar()
.add_xaxis([2017,2018,2019,2020,2021,2022,2023])
.add_yaxis("产品销量", [58000, 60200, 63000, 71000, 84000, 90500, 107000])
.set_global_opts(title_opts=opts.TitleOpts(title="11 ~ 17年 xxx 公司 xx 产品销量图", subtitle="这里是副标题"))
)
make_snapshot(snapshot, bar.render(), "bar_1.png")
这时,在同目录下生成了一个名称为 bar_1.png
的图片,就不贴出来了,和上面的图片是一样的,只是这张 png 图片是透明底的。
8.5使用主题
pyecharts 还提供了 10+ 种内置主题,如果有需要也可以自己定制自己喜欢的主题,示例如下:
1.参考代码
# coding=utf-8🔥
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-26
@author: 北京-宏哥
Project: Python可视化神器1-Pyecharts绘图详细教程
'''
# 3.导入模块
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis([2017,2018,2019,2020,2021,2022,2023])
.add_yaxis("产品A", [58000, 60200, 63000, 71000, 84000, 90500, 107000])
.add_yaxis("产品B", [78000,80200,93000,101000,64000,70500,87000])
.set_global_opts(title_opts=opts.TitleOpts(title="17 ~ 23年 xxx 公司 xx 产品销量图", subtitle="这里是副标题"))
)
bar.render('render_2.html')
2.运行代码后,在本地电脑的目录下找到文件,浏览器打开,如下图所示:
9.小结
本文就是简单的介绍了一些Pyecharts的特性以及展示了几个基本图形。