Python - pyecharts:直接将图片保存为 png, pdf, gif 格式的文件
参考一
关键:使用 pyecharts-snapshot插件
第一步:安装phantomjs
打开系统命令行,键入下列代码:
npm install -g phantomjs-prebuilt
第二步:安装了 Nodejs 环境
下载链接:https://nodejs.org/en/download/
第三步:安装 pyecharts-snapshot
pip install pyecharts-snapshot
第四步:重启计算机,render(path=“”)的输出路径和格式即可
参考二
pyecharts生成的网页图像如果直接截图,图片分辨率较低,不适合用于演示。因此可以考虑将其转换为jpg等格式使用。网上搜到的大部分采用pyecharts-snapshot方式来进行转换。通常的方法是:
(1)安装phantomjs (下载地址:http://phantomjs.org/download.html),这个版本相对固定,一般不需考虑版本问题。
(2)安装node.js (我的电脑上一直装有node.js,因此不确定该安装是否必须) https://nodejs.org/en/download/
(3)安装pyecharts-snapshot
pip install pyecharts-snapshot
(4)使用snapshot进行转换
from pyecharts import Line, Pie, Grid from pyecharts_snapshot.main import make_a_snapshot attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 10, 100] v2 = [55, 60, 16, 20, 15, 80] line = Line("折线图示例") line.add("商家A", attr, v1, mark_point=["average"]) line.add("商家B", attr, v2, is_smooth=True, mark_line=["max", "average"]) line.render('test.html') make_a_snapshot('test.html', 'test.pdf')
然而,不幸的是,我照搬这种方法,程序运行没有任何错误提示,但是出现两个警告信息:
RuntimeWarning: coroutine 'make_a_snapshot' was never awaited
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
然后,没有写任何文件!几经搜索,发现问题出在python版本上,据pyecharts (https://github.com/pyecharts)github社区中明确表示上述方法不支持python3.6 3.7等版本。可以使用snapshot-phantomjs替代。
(万恶的版本问题,不知道有多少初学者因为版本问题而从入门到放弃了。反正笔者当年安装keras、TensorFlow等各种版本切换,差点就疯了。不过坚持下来,会发现多解决一些问题,积累一些经验,在遇到技术问题,心里就没有刚开始那么紧张和无助了)。
下面我就直接安装。因为已经安装了phantomjs 和node.js了,所以不确定除了phantomjs,是否还需要node.js
(1)还是先安装snapshot-phantomjs。
pip install snapshot-phantomjs
我是使用的清华镜像,所以pip install的速度还是飞快的。如果安装速度慢的,可以考虑使用国内镜像。 当然,高手也可以直接在GitHub上下载源文件(https://github.com/pyecharts/snapshot-phantomjs)。
(2)当然就是使用了。下面是使用的基本结构:
from snapshot_phantomjs import snapshot from pyecharts.render import make_snapshot make_snapshot(snapshot,"*.html","*.svg")#生成svg图片
至此,大功告成了。在snapshot.py文件中可以看到,它支持的文件格式有如下几种。
PNG_FORMAT = "png" JPG_FORMAT = "jpeg" GIF_FORMAT = "gif" PDF_FORMAT = "pdf" SVG_FORMAT = "svg" EPS_FORMAT = "eps" B64_FORMAT = "base64"
因此,在输出的文件后缀名中,要严格按照上面的几个字符串来写,不然会有错误提示。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?