在Jupyter中使用Pyechart画图渲染生成的都是html文件,想获取图片只能截图(太不方便了)。老师上课提到render也可生成png/jpeg/pdf/svg等格式的文件,尝试了很久才成功。记录下,希望能帮助大家闭坑。
官方文档中提到了使用 pyecharts 渲染成图片的三种方式: selenium, phantomjs 和 pyppeteer 三种方式。selenium和phantomjs我都尝试了,最终selenium成功,phantomjs失败。在此分享下selenium方法的实现过程,个人觉得这个方法简单友好。
snapshot-selenium是 pyecharts + selenium 渲染图片的扩展,使用 selenium 需要配置 browser driver,推荐使用Chrome浏览器。
步骤一:下载并配置ChromeDriver
1. 查看Chrome版本
打开Chrome,找到关于“关于Google Chrome”,查看版本。
2. 下载ChromeDriver
下载地址:http://chromedriver.storage.googleapis.com/index.html
选择对应版本的Chromedrive并进行下载。
3. 配置ChromeDriver环境
进入“访达”,通过快捷键“command+shift+g”进入“/usr/local/bin”,将ChromeDriver放在该路径下。
步骤二:验证安装是否成功
打开终端,查看ChromeDriver版本,输入
$ chromedriver –version
注意,能够输出ChromeDriver版本即安装成功。
关于验证的更多内容请参考:在Mac系统下搭建Selenium环境并驱动Chrome浏览器_版本
步骤三:安装包 snapshot-selenium
打开终端,输入
$ pip install snapshot-selenium
程序实现
## 导入相关包
from pyecharts.charts import Funnel
from pyecharts import options as opts
from pyecharts.render import make_snapshot # 导入输出图片工具
from snapshot_selenium import snapshot # 使用snapshot-selenium渲染图片
## 输入数据
data = [45,86,35,53,68]
labels=['计算机','手机','电视机','冰箱','洗衣机']
## 生成漏斗图
wf = Funnel(init_opts=opts.InitOpts(
width="500px", # 宽度
height="400px", # 高度
bg_color="white" # 图片背景
))
wf.add('电器销售图',[list(z) for z in zip(labels,data)])
## 渲染图片
make_snapshot(snapshot,wf.render(),'/Users/apple/Desktop/图片.png')
有一点需要注意,在没配置全局变量前,我生成的图片背景是黑色的。解决方法是调用opts.InitOpts改变bg_color的参数,详见上代码。
除了生成png格式的图片,该方法还可以生成jpeg以及pdf,非常方便,只需改一下文件后缀名。
## 渲染图片
make_snapshot(snapshot,wf.render(),'/Users/apple/Desktop/图片.png') # png
make_snapshot(snapshot,wf.render(),'/Users/apple/Desktop/图片.jpeg') # jpeg
make_snapshot(snapshot,wf.render(),'/Users/apple/Desktop/图片.pdf') # pdf
本文完,快去试试吧~
- 相关评论
- 我要评论
-