Python数据可视化Pyecharts库的使用教程
作者:JesseaKylin 发布时间:2023-01-24 23:17:34
一、Pyecharts 概述
Pyechart 是一个用于生成 Echarts 图表(Echarts 是基于 Javascript 的开源可视化图表库)的 Python 第三方库。
1.1 Pyecharts 特性
根据官方文档的介绍,Pyecharts 的特性如下:
1.简洁的 API 设计,使用如丝滑般流畅,支持链式调用
2.包含了 30+ 种常见图表,应有尽有
3.支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
4.可轻松集成至 Flask,Django 等主流 Web 框架
5.高度灵活的配置项,可轻松搭配出精美的图表
6.详细的文档和示例,帮助开发者更快的上手项目
7.多达 400+ 地图文件及原生的百度地图,为地理数据可视化提供强有力的支持
Pyecharts 官网链接:https://pyecharts.org/#/
1.2 Pyecharts 入门案例
1.2.1 安装 Pyecharts
# 通过 pip 安装 Pyecharts
$ pip install pyecharts
# 安装完成后可以通过以下命令检查 Pyecharts 是否安装成功
$ pip list
1.2.2 Pyecharts 入门案例
from pyecharts.charts import Bar
# v1 版本开始支持链式调用
bar = (
Bar()
.add_xaxis(['衬衫', '毛衣', '裤子'])
.add_yaxis('商家A', [10, 20, 30])
.add_yaxis('商家B', [30, 20, 10])
)
# render 会生成本地 html 文件,默认当前目录,且文件名称为 render.html
# 同样也可以传入参数,例如:bar.render('mycharts.html')
bar.render()
运行上述程序,会在当前 .py 文件目录下生成一个 render.html,打开 render.html,展示的柱状图如下:
二、Pyecharts 配置项
Pyecharts 的配置项分为全局配置项、系列配置项,通过这些配置项,可以对 charts 图中的展示内容进行自定义。
2.1 全局配置项
全局配置可以通过 set_global_opts
方法进行设置,如下图,可以通过全局配置项,自定义charts 图的标题、图例、提示框、工具箱等展示内容。
2.1.1 全局配置项的使用
全局配置项的使用基本大致相同,因此,以 TitleOpts 标题设置项为例,详细介绍一下如何去使用这些设置项,首先,通过官方文档的介绍,可以基本知道 TitleOpts 支持的设置项有哪些:
class TitleOpts(
# 主标题文本,支持使用 \n 换行。
title: Optional[str] = None,
# 主标题跳转 URL 链接
title_link: Optional[str] = None,
# 主标题跳转链接方式
# 默认值是: blank
# 可选参数: 'self', 'blank'
# 'self' 当前窗口打开; 'blank' 新窗口打开
title_target: Optional[str] = None,
# 副标题文本,支持使用 \n 换行。
subtitle: Optional[str] = None,
# 副标题跳转 URL 链接
subtitle_link: Optional[str] = None,
# 副标题跳转链接方式
# 默认值是: blank
# 可选参数: 'self', 'blank'
# 'self' 当前窗口打开; 'blank' 新窗口打开
subtitle_target: Optional[str] = None,
# title 组件离容器左侧的距离。
# left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
# 也可以是 'left', 'center', 'right'。
# 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
pos_left: Optional[str] = None,
# title 组件离容器右侧的距离。
# right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
pos_right: Optional[str] = None,
# title 组件离容器上侧的距离。
# top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
# 也可以是 'top', 'middle', 'bottom'。
# 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
pos_top: Optional[str] = None,
# title 组件离容器下侧的距离。
# bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
pos_bottom: Optional[str] = None,
# 标题内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。
# // 设置内边距为 5
# padding: 5
# // 设置上下的内边距为 5,左右的内边距为 10
# padding: [5, 10]
# // 分别设置四个方向的内边距
# padding: [
# 5, // 上
# 10, // 右
# 5, // 下
# 10, // 左
# ]
padding: Union[Sequence, Numeric] = 5,
# 主副标题之间的间距。
item_gap: Numeric = 10,
# 主标题字体样式配置项,参考 `series_options.TextStyleOpts`
title_textstyle_opts: Union[TextStyleOpts, dict, None] = None,
# 副标题字体样式配置项,参考 `series_options.TextStyleOpts`
subtitle_textstyle_opts: Union[TextStyleOpts, dict, None] = None,
)
而前面有说到,全局配置项是通过 set_global_opts 进行设置,也就是说,在调用 set_global_opts 时,只需要在其入参中添加上 title_opts,就可以针对 charts 图进行一些标题的自定义,set_global_opts 相关源码及相关案例如下:
def set_global_opts(
self,
title_opts: types.Title = opts.TitleOpts(),
legend_opts: types.Legend = opts.LegendOpts(),
tooltip_opts: types.Tooltip = None,
toolbox_opts: types.Toolbox = None,
brush_opts: types.Brush = None,
xaxis_opts: types.Axis = None,
yaxis_opts: types.Axis = None,
visualmap_opts: types.VisualMap = None,
datazoom_opts: types.DataZoom = None,
graphic_opts: types.Graphic = None,
axispointer_opts: types.AxisPointer = None,
):
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = (
Bar()
.add_xaxis(['衬衫', '毛衣', '裤子'])
.add_yaxis('商家A', [10, 20, 30])
.add_yaxis('商家B', [30, 20, 10])
.set_global_opts(
title_opts=opts.TitleOpts(
title='This is title'
)
)
)
bar.render()
2.1.2 全局配置项使用总结
在调用 set_global_opts 时,可以追加相应的全局配置项,支持的全局配置项可以参考 set_global_opts 源码。
可以通过官方文档或者查看源码去了解这些全局配置项都支持哪些入参,同样也可以通过源码入手。
注意入参的数据类型,并不是所有全局配置项的入参都是 str 类型。
2.2 系列配置项
系列配置可以通过 set_series_opts
方法进行设置,通过系列配置项,可以对文字、图元等样式进行配置。
2.2.1 系列配置项的使用
以 ItemStyleOpts 图元设置项为例,同样可以通过官方文档的介绍,可以基本知道 ItemStyleOpts 支持的设置项有哪些:
class ItemStyleOpts(
# 图形的颜色。
# 颜色可以使用 RGB 表示,比如 'rgb(128, 128, 128)',如果想要加上 alpha 通道表示不透明度,
# 可以使用 RGBA,比如 'rgba(128, 128, 128, 0.5)',也可以使用十六进制格式,比如 '#ccc'。
# 除了纯色之外颜色也支持渐变色和纹理填充
#
# 线性渐变,前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1,相当于在图形包围盒中的百分比,
# 如果 globalCoord 为 `true`,则该四个值是绝对的像素位置
# color: {
# type: 'linear',
# x: 0,
# y: 0,
# x2: 0,
# y2: 1,
# colorStops: [{
# offset: 0, color: 'red' // 0% 处的颜色
# }, {
# offset: 1, color: 'blue' // 100% 处的颜色
# }],
# global: false // 缺省为 false
# }
#
# 径向渐变,前三个参数分别是圆心 x, y 和半径,取值同线性渐变
# color: {
# type: 'radial',
# x: 0.5,
# y: 0.5,
# r: 0.5,
# colorStops: [{
# offset: 0, color: 'red' // 0% 处的颜色
# }, {
# offset: 1, color: 'blue' // 100% 处的颜色
# }],
# global: false // 缺省为 false
# }
#
# 纹理填充
# color: {
# image: imageDom, // 支持为 HTMLImageElement, HTMLCanvasElement,不支持路径字符串
# repeat: 'repeat' // 是否平铺, 可以是 'repeat-x', 'repeat-y', 'no-repeat'
# }
color: Optional[str] = None,
# 阴线 图形的颜色。
color0: Optional[str] = None,
# 图形的描边颜色。支持的颜色格式同 color,不支持回调函数。
border_color: Optional[str] = None,
# 阴线 图形的描边颜色。
border_color0: Optional[str] = None,
# 描边宽度,默认不描边。
border_width: Optional[Numeric] = None,
# 支持 'dashed', 'dotted'。
border_type: Optional[str] = None,
# 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
opacity: Optional[Numeric] = None,
# 区域的颜色。
area_color: Optional[str] = None,
)
具体使用方式如下:
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = (
Bar()
.add_xaxis(['衬衫', '毛衣', '裤子'])
.add_yaxis('商家A', [10, 20, 30])
.add_yaxis('商家B', [30, 20, 10])
.set_series_opts(
itemstyle_opts=opts.ItemStyleOpts(
color='#0066FF'
)
)
)
bar.render()
在上面的 charts 图中可以看到,charts 图的颜色发生了变化,同样可以发现一个问题,就是每个系列的颜色都是相同的,这样的 charts 图可能并不符合我们的预期结果,既然是系列配置项,那么我们的关注点可以放到 add_yaxis
上,可以看到,该方法同样也是有一个 itemstyle_opts
入参的,因此,还可以进行如下方式的设置:
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = (
Bar()
.add_xaxis(['衬衫', '毛衣', '裤子'])
.add_yaxis('商家A', [10, 20, 30], itemstyle_opts=opts.ItemStyleOpts(color='#5edd55'))
.add_yaxis('商家B', [30, 20, 10], itemstyle_opts=opts.ItemStyleOpts(color='#33c0eb'))
)
bar.render()
2.2.2 系列配置项使用总结
系列配置项的使用方式其实和全局配置项的使用方式基本相同:
在调用 set_series_opts 时,可以追加相应的全局配置项,支持的全局配置项可以参考 set_series_opts 源码。
可以通过官方文档或者查看源码去了解这些全局配置项都支持哪些入参,同样也可以通过源码入手。
注意入参的数据类型,并不是所有全局配置项的入参都是 str 类型。
系列配置项支持在 charts 图系列中进行追加。
三、Pyecharts 的总结
对于生成 charts 图,无非是两个步骤:1)获取数据,2)将数据生成 charts 图,而 pyecharts 关注的重点则在于第二步,在了解了 pyecharts 的全局配置项和系列配置项之后,可以说是基本掌握了 pyecharts 的使用,对于 pyecharts 其他类型的 charts 图不再进行演示,官方文档上都有详细的说明。
来源:https://juejin.cn/post/7059675488444219399


猜你喜欢
- 在python中,循环有一个语句:for语句。简单的for循环例子>>> hello = "world"
- 如下: Warning at /admin/assets/add/ Incorrect string value: '\xE5\x9
- 数据库开启慢查询日志修改配置文件在配置文件my.ini中加上下面两句话log-slow-queries = C:\xampp\mysql_s
- 这里我们应用之前一篇写过的弹框效果,单选框我们运用伪元素自定义,不使用图片, 这个例子可以运用到很多情况;知识点:1、理解wx:if作用2、
- php获取域名的google收录示例function get_index($domain){ $url="http://www.g
- 大家好,我是辣条。曾经有一个真挚的机会,摆在我面前,但是我没有珍惜,等到失去的时候才后悔莫及,尘世间最痛苦的事莫过于此,如果老天可以再给我一
- Python字典的创建方法一:>>> blank_dict = {}>>> product_dict =
- 本文是对《Python Qt GUI快速编程》的第9章的堆叠窗口例子Vehicle Rental用Python3+PyQt5+Qt Desi
- PHP中的MYSQL常用函数1、mysql_connect()-建立数据库连接格式:resource mysql_connect([stri
- 本文实例为大家分享了python视频按帧截取图片工具的具体代码,供大家参考,具体内容如下描述:将一个视频流按帧数截取大量的图片用途:AI的数
- 方法一、os.system() 会保存可执行程序中的打印值和主函数的返回值,且会将执行过程中要打印的内容打印出来import os main
- 1、Mongoose模块(1)是一个对象模型工具,是对Node.js环境下操作MongoDB数据库进行了封装,可以将MongoDB数据库中的
- 一、什么是嵌入类型先看如下代码:type user struct { name string &nb
- MySql通用分页存储过程过程参数p_cloumns varchar(500),p_tables varchar(100),p_where
- 一、为什么使用Python进行网络爬虫?由于Python语言十分简洁,使用起来又非常简单、易学,通过Python 进行编写就像使用英语进行写
- 概述TensorFlow2 的基本操作和 Numpy 的操作很像. 今天带大家来看一看 TensorFlow 的基本数据操作.创建数据详细讲
- 1.学习sql之前回忆一下,什么是变量?变量:能存储数据的值。变量是一块内存空间的表示。数组一连串空间变量是存储数据的容器(通俗讲)2.变量
- 代码#!/usr/bin/env python# -*- coding: utf-8 -*-# @File : HtmlParser.py#
- PHP的继承模型中有一个存在已久的问题,那就是在父类中引用扩展类的最终状态比较困难。我们来看一下代码清单5-11中的例子。代码清单5-11意
- python可以返回多个值,确实挺方便函数里的return只能返回一个值,但是返回类型是没是限制的因此,我们可以“返回一个 tuple类型,