将pyecharts生成的网页保存为图像格式的方法(2020.3)

        pyecharts生成的网页图像如果直接截图,图片分辨率较低,不适合用于演示。因此可以考虑将其转换为jpg等格式使用。网上搜到的大部分采用pyecharts-snapshot方式来进行转换。通常的方法是:

(1)安装phantomjs  (下载地址:http://phantomjs.org/download.html),这个版本相对固定,一般不需考虑版本问题。

(2)安装node.js (我的电脑上一直装有node.js,因此不确定该安装是否必须)

(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"

        因此,在输出的文件后缀名中,要严格按照上面的几个字符串来写,不然会有错误提示。

 

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值