前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python可视化神器1-Pyecharts绘图详细教程-初识Pyecharts

Python可视化神器1-Pyecharts绘图详细教程-初识Pyecharts

原创
作者头像
北京-宏哥
修改2024-01-24 16:10:23
70610
代码可运行
修改2024-01-24 16:10:23
运行总次数:0
代码可运行

前言

文档位于 https://pyecharts.org/#/zh-cn/intro

示例位于 https://gallery.pyecharts.org/#/README

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#892ISSUE#1033

v0.5.X

支持 Python2.7,3.4+

经开发团队决定,0.5.x 版本将不再进行维护,0.5.x 版本代码位于 05x 分支,文档位于 05x-docs.pyecharts.org

v1

仅支持 Python3.6+

新版本系列将从 v1.0.0 开始,文档位于 pyecharts.org,即本文档。

v2

支持 Python3.6 ~ Python 3.11

新版本系列从 Echarts 4 切换到 Echarts 5

宏哥本系列用的 Pyecharts 版本是2.0.4  ! 如下图所示:

谨记:不要装错啦!不同版本有些图参数设置不一样!

2.2安装

(1)直接 pip 安装:

代码语言:bash
复制
pip(3) install pyecharts==2.0.4

 显示successfully,表示安装成功!!!

但宏哥实测时发现,由于墙的原因,下载时会出现断线和速度过慢的问题导致下载失败,所以建议通过清华镜像来进行下载:

代码语言:bash
复制
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

(2)源码安装

代码语言:bash
复制
$ git clone https://github.com/pyecharts/pyecharts.git
$ cd pyecharts
$ pip install -r requirements.txt
$ python setup.py install
# 或者执行 python install.py

(3)查看已安装版本:

代码语言:python
代码运行次数:0
复制
import pyecharts
print(pyecharts.__version__)

2.3 常用安装方式

代码语言:bash
复制
pip install xxx(库名)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ xxx(库名)

2.4 安装地图文件(可选)

后期涉及到地图部分的可视化,所以这里就把地图包先装上(如果自己的可视化不包含地图,可以先不装,需要的时候再装也可以):

  • 全球国家地图: echarts-countries-pypkg
  • 中国省级地图: echarts-china-provinces-pypkg
  • 中国市级地图: echarts-china-cities-pypkg
代码语言:bash
复制
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=图表类型()

代码语言:javascript
复制
chart_name = Type() #初始化具体类型图表

例如,绘制柱图

代码语言:javascript
复制
mybar=Bar()

(2)添加配置项

xxx.add(.....)

代码语言:javascript
复制
add() #加数据及配置项,基本都在操作这个函数

(3)生成html文件

xxx.render(“xxx.html”)

代码语言:javascript
复制
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

代码语言:javascript
复制
# 将图形渲染到 notebook
def render_notebook()

6.2 输出到 html 文件

代码语言:javascript
复制
def render(
 # 生成图片路径
 path: str = "render.html",

 # 模板路径
 template_name: str = "simple_chart.html",

 # jinja2.Environment 类实例,可以配置各类环境参数
 env: Optional[Environment] = None,
)

7.图形设置

图形的设置方法都是同宗同源,大致主要为以下几种:

1、设置颜色:

代码语言:javascript
复制
.add_yaxis( "商家A", Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color='red')

2、设置间距与宽度:通过添加gap百分比,默认为类目间距的 20%

代码语言:javascript
复制
.add_yaxis('门店', data2,category_gap="50%")

3、设置是否显示数据:通过添加label_opts = opts.LabelOpts(is_show=False)

代码语言:javascript
复制
.add_yaxis('MSE', data1,label_opts = opts.LabelOpts(is_show=False))

4、设置平均线:

代码语言:javascript
复制
.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_

代码语言:javascript
复制
.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()],

代码语言:javascript
复制
.set_global_opts(title_opts=opts.TitleOpts(title="MSE", subtitle="MSE与决策树数量关系图"), datazoom_opts=[opts.DataZoomOpts()], yaxis_opts=opts.AxisOpts(min_=0.33,))

7、设置画布大小:

代码语言:javascript
复制
Bar(init_opts=opts.InitOpts(width="720px", height="680px"))

8、设置图形中的竖直区域

代码语言:javascript
复制
.set_series_opts( markarea_opts=opts.MarkAreaOpts( data=[ opts.MarkAreaItem(x=(s,e)) for s,e in zip([10],[12]) ] ))

9、横坐标显示不全,倾斜横坐标

代码语言:javascript
复制
.set_global_opts(title_opts=opts.TitleOpts(title="天气情况"), xaxis_opts=opts.AxisOpts(name='日期',axislabel_opts={"rotate":50}))

8.五分钟上手

8.1简单示例

首先开始来绘制你的第一个图表。

1.参考代码

代码语言:python
代码运行次数:0
复制
# coding=utf-8🔥

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2024-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 的方法都支持链式调用,就是上面这一段我们可以换成链式调用的写法,如下:

代码语言:python
代码运行次数:0
复制
# coding=utf-8🔥

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2024-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.参考代码

代码语言:python
代码运行次数:0
复制
# coding=utf-8🔥

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2024-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 将结果渲染成图片,如果没有安装的话需要先安装,安装命令如下:

代码语言:javascript
复制
pip install snapshot_selenium

这里有一点需要注意,如果想要正常的使用 snapshot_selenium ,需要本地有和当前 Chrome 正常配套的 ChromeDriver ,如果没有,需要先安装。

8.4渲染成图片示例

1.参考代码

代码语言:python
代码运行次数:0
复制
# coding=utf-8🔥

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2024-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.参考代码

代码语言:python
代码运行次数:0
复制
# coding=utf-8🔥

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2024-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的特性以及展示了几个基本图形。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1. 简介
    • 1.1 Pyecharts 是什么
      • 1.2 Pyecharts 特性
      • 2. 安装
        • 2.1 Pyecharts 版本
          • 2.2安装
            • 2.3 常用安装方式
              • 2.4 安装地图文件(可选)
              • 3.pyecharts常用的方法
              • 4.绘制图表的基本步骤
              • 5. 图表类型
                • 5.1 直角坐标系图表
                  • 5.2 基本图表
                    • 5.3 树形图表
                      • 5.4 地理图表
                        • 5.5. 3D图表
                          • 5.6. 组合图表
                            • 5.7. HTML组件
                            • 6. 绘图输出
                              • 6.1 输出到 jupyter notebook
                                • 6.2 输出到 html 文件
                                • 7.图形设置
                                • 8.五分钟上手
                                  • 8.1简单示例
                                    • 8.2链式调用
                                      • 8.3配置项
                                        • 8.4渲染成图片示例
                                          • 8.5使用主题
                                          •  9.小结
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档