简介:本文面向 Python 数据可视化初学者,脚踏实地分享 Pyecharts 库的使用经验。从查看 Pyecharts 版本起步,详细拆解绘制首个图表的全过程,涵盖导入模块、设置坐标轴、渲染 HTML 文件等基础操作;点明链式调用的版本要求与潜在 “坑点”;介绍如何巧用 options 配置图表样式,以及将图表渲染为图片文件的正确姿势。还涉及主题包导入、展示动画效果等进阶内容,文末更有感而发,强调技术应服务大众,助力大家快速上手 Pyecharts,打造精美可视化图表,本专栏也会持续更新相关实用技巧。
零基础入门 Pyecharts 实用教程:从基础绘图到进阶技巧
pyecharts的应用
(第一步)查看自己的pyecharts版本
import pyecharts
# 可以通过这个语句查看自己的pyecharts版本
print(pyecharts.__version__)
我的版本是2.0.7,不一定非要版本一样,改动不大。
(第二步)第一个图表的绘制
- 通过pyecharts.charts 导入 Bar
- Bar()创建一个柱形图
- add_xaxis 设置横坐标 add_yaxis设置纵坐标
- render进行渲染,生成一个html文件
- render函数中可以添加字符串作为 参数比如 ‘bb.html’,生成的html文件就是一个名字为bb的html文件
- 如果你是在jupyter中使用 你可以使用bar.render_notebook()函数不用生成html就可以打开
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(['帽子','衣服','鞋子','裤子','袜子'])
bar.add_yaxis('价格',[10,20,30,40,50])
# render会渲染成html文件
bar.render()
用浏览器打开这个html网页,会看到一张图:
(第三步)链式调用
链式调用必须在pyecharts1.0以后得版本才能用
第二步的代码可以用链式调用的语法,效果是一致的:
from pyecharts.charts import Bar
bar = {
Bar()
.add_xaxis(['帽子','衣服','鞋子','裤子','袜子'])
.add_yaxis('价格',[10,20,30,40,50])
.render()
}
(第四步)使用options配置项
- 需要从pyecharts 导入options as opts
- 配置项可以使用set_global_opts(title_opts=字典 text 和 subtext设置value)
- 配置项可以使用set_global_opts(title_opts=opts.TitleOpts(title=‘主标题’,subtitle=‘副标题’))的方式来设置
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = {
Bar()
.add_xaxis(['帽子','衣服','鞋子','裤子','袜子'])
.add_yaxis('价格',[10,20,30,40,50])
# 全局配置
#.set_global_opts(title_opts=opts.TitleOpts(title='主标题',subtitle='副标题'))
.set_global_opts(title_opts={'text':'主标题','subtext':'副标题'})
.render()
}
(第五步)渲染成图片文件
- 从 pyecharts.render中导入make_snapshot
- 从snapshot_selenium中导入 snapshot
- 这里遇到一个问题,先说问题是怎么出现的,在我这个2.0.7版本的pyecharts中使用这个语句进行图片文件渲染会报错,make_snapshot(snapshot,bar.render(),‘bar.png’),报错内容是他把bar判断成一个集合而不是图片文件,因为我使用了链式调用,他判断是集合,我改回正常调用就没问题了,下面这个代码实例使用对象.方法就没有问题,但是使用链式调用会被判断成集合,就不能渲染成图片文件了,综上所述,少用链式调用,别偷懒,少出问题
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
bar = Bar()
bar.add_xaxis(['帽子','衣服','鞋子','裤子','袜子'])
bar.add_yaxis('价格',[10,20,30,40,50])
# 全局配置
# bar.set_global_opts(title_opts=opts.TitleOpts(title='主标题',subtitle='副标题'))
bar.set_global_opts(title_opts={'text':'主标题','subtext':'副标题'})
make_snapshot(snapshot,bar.render(),'bar.png')
(第六步)导入主题包
- 从 pyecharts.gloabls 导入 ThemeType库
- 在创建图像的Bar函数里面加入参数 init_opts = opts.InitOps(theme = ThemeType.主题)
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.WHITE))
bar.add_xaxis(['帽子','衣服','鞋子','裤子','袜子'])
bar.add_yaxis('价格',[10,20,30,40,50])
# 全局配置
# bar.set_global_opts(title_opts=opts.TitleOpts(title='主标题',subtitle='副标题'))
bar.set_global_opts(title_opts={'text':'主标题','subtext':'副标题'})
make_snapshot(snapshot,bar.render(),'bar.png')
(第七步)加入一个y轴价格2 ,展示pyecharts的动画效果。
并没有学习新的内容,只是为了看看他的动画多好看,多直观,还有就是相同的代码量要比matplotlib更好看。这里你只需要把我的代码复制一下:
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis(['帽子','衣服','鞋子','裤子','袜子'])
bar.add_yaxis('价格1',[13,23,33,43,53])
bar.add_yaxis('价格2',[7,17,27,37,47])
# 全局配置
# bar.set_global_opts(title_opts=opts.TitleOpts(title='主标题',subtitle='副标题'))
bar.set_global_opts(title_opts={'text':'主标题','subtext':'副标题'})
# make_snapshot(snapshot,bar.render(),'bar.png')
bar.render()
这是初始的图片效果:
这个价格1 是可以点击的按钮,点击他可以不显示价格1
而且他在点击的过程中是有一个渐变的动画效果的,这样别人看起来更舒适。坦率的说,pyecharts没有什么技术上的难度,但是你不能从程序猿的角度去看问题,他给用户看,用户看这样的图表就是更舒服,程序猿是编写程序服务别人的,不能本末倒置。
能看到这里的都是踏实学习的,也希望你们能耐下心来听我说两句题外话,作为一名普通学校软件工程专业的大学生,刚学的时候觉得kmp算法 很有意思,就开始一味的追求算法的复杂,技术的难度。但是有一天,我去逛商场,看见一家卖华为电视的地方有沙发,我去坐会儿,听见了售货员和消费者沟通,一个说我们家的电视用了多么多么牛的图像处理算法,用了什么厉害的技术,什么国产的芯片,电视机什么什么参数,一个说价格能不能再商量。鸡同鸭讲,讲了半天。他们都是从格子的立场出发的,售货员想多卖点,消费者想便宜点。我当时听完了以后。我第一反应是愤怒,那些研究技术的人员要知道,自己研究的东西别人看不懂,会不会想强制给他们安排学校学习,了解自己研究的东西多么厉害。后来又觉得荒谬,商品明明是服务于人的,我怎么会有这种想法。我发现我脱离群众了,一切都是给人服务的。大道至简,返璞归真,就好比当年的巨型计算机,不后来也变成笔记本了吗?考研政治有这么一条理论,就是发展规律是循环的,他是一个圈,从简单到复杂再到简单循环往复,螺旋上升的。也是一时兴起,说了一下体会吧,希望大家别嫌我烦。本专栏会持续更新pyecharts的使用方法。