前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用phantomjs将pyecharts生成的html渲染为png

使用phantomjs将pyecharts生成的html渲染为png

作者头像
一夕如环
发布2022-03-23 15:45:48
2.5K0
发布2022-03-23 15:45:48
举报

以前用pyecharts对每日数据可视化,无奈邮件没法发送包含js的网页,这可累坏我了。考虑了几个小时,最后决定把echarts生成的HTML文件渲染成图片在给邮件发送给各位领导。

echarts的官网有实现方法,比较简单。

snapshot-phantomjs

安装

代码语言:javascript
复制
$ pip install snapshot-phantomjs

snapshot-phantomjs 是 pyecharts + phantomjs 渲染图片的扩展,需要先安装 phantomjs,安装方法请参照官网 phantomjs.org/download.html

使用

代码语言:javascript
复制
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot

from snapshot_phantomjs import snapshot

def bar_chart() -> Bar:
    c = (
        Bar()
        .add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
        .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
        .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
        .reversal_axis()
        .set_series_opts(label_opts=opts.LabelOpts(position="right"))
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-测试渲染图片"))
    )
    return c

make_snapshot(snapshot, bar_chart().render(), "bar0.png")

从此,我过上了高枕无忧的生活……

不过,好景不长。过了一段高枕无忧的生活之后,日报就不发了。不过我依然我行我素,完全不考虑各位领导的感受。(其实是没时间)
最近,我有条件了,开始排查……发现这次日报的报错,我根本无从下手。不管是咨询资深的聪兄,还是资浅的辉明。我都是一筹莫展。作为一名资深的搬运工,我最擅长的是换过几种渲染的方式,和几台linux服务器,几个版本的Python,而不是从源码里面追诉问题。不过,意料之中,报错始终如一。
代码语言:javascript
复制
Traceback (most recent call last):
  File "/root/snapshot-phantomjs_test.py", line 19, in <module>
    make_snapshot(snapshot, bar_chart().render(), "bar0.png")
  File "/usr/local/lib/python3.9/site-packages/pyecharts/render/snapshot.py", line 45, in make_snapshot
    raise OSError(content_array)
OSError: ["ReferenceError: Can't find variable: echarts\n\n  file:////root/render.html:12 in global code\nReferenceError: Can't find variable: echarts\n\n  undefined:1\nnull\n"]

在顶着来自各级领导的层层压力之下,我只能出绝招。百度一下。果然,全球人民还是一条心的,难得有几个遇到这个问题的人,都是说把 echarts.min.js 下载在本地,改代码的引用方式就可以了。不过因为这个鬼东西

https://assets.pyecharts.org/assets/echarts.min.js

我确实能访问到,大家都可以,不限种族肤色。可是当我相信的时候,下载下来,改了路径。我想要的图片就呼啦啦的出来了。此时,热泪盈眶~

wget https://assets.pyecharts.org/assets/echarts.min.js

下载到root的家目录,/root定义一下,

代码语言:javascript
复制
file_path = "{}/".format(os.path.dirname(os.path.abspath("/root/echarts.min.js")))

再定义函数的调用

代码语言:javascript
复制
Bar(init_opts=opts.InitOpts(js_host=file_path))

电脑忽传图片成,初闻涕泪满衣裳。 却看时间早下班,慢关电脑喜欲狂。 白日放歌须纵酒,所以只能到晚上。 即从步行等公交,便下凌塘向饭堂。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • snapshot-phantomjs
    • 安装
      • 使用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档