当前位置: 首页 > news >正文

Python 之 pyecharts 使用

要说绘制动态图表,echarts 肯定是有一席之地的,特别是像 flask 这种轻量级的 web 框架,在 html 中动态嵌入生成 echarts 无疑是很优的选择。pyecharts 简单来说就是以 python 的方式来生成对应的 echarts 图表。

安装

pip install pyecharts

官方示例使用 

对于我们大部分普通人来说,记忆力并不是那么超群,要记住那么多图表的参数设置着实有点困难,好在我们还有在线 Demo 手册 pyecharts-gallery

从示例找对应效果代码

比如,常规的最简单的柱状图是下面这种的。

from pyecharts.charts import Barif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80])bar.render("myecharts.html")

但你可能想要的是堆叠的图表,而不是这种并列的图表,但是堆叠的图表要怎么设置参数却忘了。这个时候,你可以打开在线 Demo 示例,在柱状图的侧边栏一个个点击查看效果,然后找到你想要的效果图。

从效果图代码修改参数

这不,效果图找到了,对应效果图的代码也找到了,然后看下要怎么修改才能变成堆叠的柱状图呢?

原来是在 add_yaxis 的时候添加了 stack 参数,而且很明显,两个 add_yaxis 设置的 stack 都是一样的,既然如此,我们也这么设置下。

from pyecharts.charts import Barif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90], stack="stack1")bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80], stack="stack1")bar.render("myecharts.html")

看下运行效果,果然如此,甚至还可以在 DeepSeek 搜索下 stack 参数的具体用法。

测试造数

我们图表画图自测的时候,就不得不造一些数据了,手动造数的话又太麻烦,pyecharts 团体估计也有此考虑,所以 pyecharts 内置了一个轻量级的 Faker 模块,大家可以看下源码。

from pyecharts.faker import Fakerif __name__ == '__main__':print(Faker.values())print(Faker.choose())print(Faker.provinces)print(Faker.country)print(Faker.animal)print(Faker.guangdong_city)print(Faker.days_values)print(Faker.clock)
[101, 115, 21, 120, 24, 137, 26]
['周一', '周二', '周三', '周四', '周五', '周六', '周日']
['广东省', '北京市', '上海市', '江西省', '湖南省', '浙江省', '江苏省']
['China', 'Canada', 'Brazil', 'Russia', 'United States', 'Africa', 'Germany']
['河马', '蟒蛇', '老虎', '大象', '兔子', '熊猫', '狮子']
['汕头市', '汕尾市', '揭阳市', '阳江市', '肇庆市', '广州市', '惠州市']
[26, 29, 25, 12, 29, 7, 9, 5, 22, 8, 12, 28, 20, 28, 14, 14, 5, 9, 6, 18, 22, 18, 10, 28, 5, 22, 11, 4, 1, 7]
['12a', '1a', '2a', '3a', '4a', '5a', '6a', '7a', '8a', '9a', '10a', '11a', '12p', '1p', '2p', '3p', '4p', '5p', '6p', '7p', '8p', '9p', '10p', '11p']

图片生成

默认是渲染生成的 html,如果要生成图片文件,还需要额外安装依赖。

pip install snapshot-selenium
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshotif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80])# bar.render("myecharts.html")make_snapshot(snapshot, bar.render(), "myecharts.png")

这样就可以生成对应图表的图片了(当然,渲染成图片的话时间花费会久一些)。

柱状图 

常规图

from pyecharts.charts import Barif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80])bar.render("myecharts.html")

堆叠图

对要堆叠的数据设置相同的 stack 参数即可。

from pyecharts.charts import Barif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90], stack="stack0")bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80], stack="stack0")bar.render("myecharts.html")

标签旋转

在 x 轴的标签选项设置旋转度数。

from pyecharts import options as opts
from pyecharts.charts import Barif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90], stack="stack0")bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80], stack="stack0")bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),)bar.render("myecharts.html")

 

设置刷选

设置刷选以后,就可以在界面进行进行圈选操作了。

from pyecharts import options as opts
from pyecharts.charts import Barif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90], stack="stack0")bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80], stack="stack0")bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),brush_opts=opts.BrushOpts(),)bar.render("myecharts.html")

数据缩放

可以添加 opts.DataZoomOpts() 设置数据缩放滑动条。

from pyecharts import options as opts
from pyecharts.charts import Barif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90], stack="stack0")bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80], stack="stack0")bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),brush_opts=opts.BrushOpts(),datazoom_opts=opts.DataZoomOpts(),)bar.render("myecharts.html")

添加工具箱

可以使用 opts.ToolboxOpts() 添加工具箱,可以进行图片下载,折线图切换等。

from pyecharts import options as opts
from pyecharts.charts import Barif __name__ == '__main__':bar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90], stack="stack0")bar.add_yaxis("商家B", [6, 30, 26, 15, 55, 80], stack="stack0")bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),brush_opts=opts.BrushOpts(),datazoom_opts=opts.DataZoomOpts(),toolbox_opts=opts.ToolboxOpts(),)bar.render("myecharts.html")

相关文章:

  • Yocto项目实战教程-第7章定制镜像菜谱与内核菜谱-7.2小节-定制应用程序
  • 使用Python+OpenCV将多级嵌套文件夹下的视频文件抽帧为JPG图片
  • AI 模型可靠性危机:DeepSeek 输出异常的技术归因与防范实践
  • 电源上电回勾现象
  • 【c语言】指针和数组笔试题解析
  • 常见数据库关键字示例 SQL 及执行顺序分析(带详细注释)
  • LX10-MDK的使用技巧
  • Qt基础006(事件)
  • 全国 OSM 数据集(2014 - 2024 年)
  • 【刷题Day23】线程和进程(浅)
  • 深度学习-全连接神经网络-3
  • Java核心API-网络编程
  • python的深拷贝浅拷贝(copy /deepcopy )
  • c语言数据结构--------选择排序
  • 《Operating System Concepts》阅读笔记:p764-p766
  • docker容器,mysql的日志文件怎么清理
  • Spark–steaming
  • 根据极点-零点分布进行状态空间模型降阶
  • 设备制造行业如何避免项目管理混乱?
  • 30分钟编写十大排序算法完成
  • 上海一小学百名学生齐聚图书馆:纸质书的浪漫AI无法取代
  • 张又侠董军分别与印尼国防部长会见会谈
  • 41岁知名学者陈昊因病骤然离世,北大再发讣告缅怀
  • 中纪委驻中组部纪检监察组原组长李刚被捕
  • 中共中央、国务院印发《关于实施自由贸易试验区提升战略的意见》
  • 跨市调任:李强已任河北唐山市检察院党组书记