Pyecharts可视化图片渲染的方法详解

作者:叶庭云 时间:2021-02-02 22:39:30 

使用 pyecharts 渲染成图片一直是开发者比较关心的功能,pyecharts提供了 selenium、phantomjs 和 pyppeteer 三种方式。

更多介绍可以学习官方文档:https://pyecharts.org/#/zh-cn/render_images

首先需要安装上snapshot-selenium

pip install snapshot-selenium -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

Pyecharts可视化图片渲染的方法详解

测试代码如下:

from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
from pyecharts import options as opts
from pyecharts.charts import Sankey

sankey = Sankey(
   init_opts=opts.InitOpts(
       width='1000px',
       height='600px',
       bg_color='#fff'
   )
)
sankey.add(
   '',
   nodes,
   links,
   node_gap=0,
   node_width=80,
   pos_right='5%',
   node_align='justify',
   focus_node_adjacency=True,
   linestyle_opt=opts.LineStyleOpts(curve=0.5, opacity=0.2, color="source"),
   label_opts=opts.LabelOpts(position='inside', color='white'),
   itemstyle_opts=opts.ItemStyleOpts(border_color="#fff"),
)

print(":".join(["CSDN叶庭云", "https://yetingyun.blog.csdn.net/"]))
# sankey.render("./results/009.html")
make_snapshot(snapshot, sankey.render(), "Pyecharts生成图片.png")

关键代码:

from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot

# 渲染的html保存为png图片
make_snapshot(snapshot, sankey.render(), "Pyecharts生成图片.png")

结果如下:

Pyecharts可视化图片渲染的方法详解

补充

当然Pyecharts不仅能进行可视化图片渲染,还能进行图表的渲染,同样也是使用selenium, phantomjs 和 pyppeteer这三种方式

渲染图片依赖库

1.make_snapshot

make_snapshot 用于 pyecharts 直接生成图片。

from pyecharts.render import make_snapshot

def make_snapshot(
   # 渲染引擎,可选 selenium 或者 phantomjs
   engine: Any,

# 传入 HTML 文件路径
   file_name: str,

# 输出图片路径
   output_name: str,

# 延迟时间,避免图还没渲染完成就生成了图片,造成图片不完整
   delay: float = 2,

# 像素比例,用于调节图片质量
   pixel_ratio: int = 2,

# 渲染完图片是否删除原 HTML 文件
   is_remove_html: bool = False,

# 浏览器类型,目前仅支持 Chrome, Safari,使用 snapshot-selenium 时有效
   browser: str = "Chrome",
   **kwargs,
)

渲染方式

1.snapshot-selenium

snapshot-selenium 是 pyecharts + selenium 渲染图片的扩展,使用 selenium 需要配置 browser driver,这部分可以参考 selenium-python 相关介绍,推荐使用 Chrome 浏览器,可以开启 headless 模式。目前支持 Chrome, Safari。

# 安装
pip install snapshot-selenium

# 使用方式
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot

from snapshot_selenium 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")

2.snapshot-phantomjs

snapshot-phantomjs 是 pyecharts + phantomjs 渲染图片的扩展,需要先安装 phantomjs。

# 安装
pip install snapshot-phantomjs

# 使用方式
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")

3.snapshot-pyppeteer

snapshot-pyppeteer 是 pyecharts + pyppeteer 渲染图片的扩展,需要先安装 pyppeteer 和 Chromium。

# 安装
pip install snapshot-pyppeteer
# 安装完后建议执行 chromium 安装命令
pyppeteer-install

# 使用方式
from snapshot_pyppeteer import snapshot

from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.render import make_snapshot

def bar_base() -> Bar:
   c = (
       Bar()
       .add_xaxis(Faker.choose())
       .add_yaxis("商家A", Faker.values())
       .add_yaxis("商家B", Faker.values())
       .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
   )
   make_snapshot(snapshot, c.render(), "bar.png")

if __name__ == '__main__':
   bar_base()

来源:https://blog.csdn.net/fyfugoyfa/article/details/122815222

标签:Python,Pyecharts,可视化,图片,渲染
0
投稿

猜你喜欢

  • 详解Node.js读写中文内容文件操作

    2024-05-03 15:55:07
  • 客齐集社区头像显示效果代码

    2008-04-03 13:15:00
  • Codeigniter发送邮件的方法

    2023-11-15 05:08:25
  • python正则过滤字母、中文、数字及特殊字符方法详解

    2022-02-20 10:14:47
  • python2和python3实现在图片上加汉字的方法

    2021-08-16 05:46:29
  • python利用scatter绘画散点图

    2021-02-02 01:45:37
  • 正计时JS代码

    2008-05-25 14:53:00
  • 详解MySQL存储过程的创建和调用

    2024-01-24 18:06:21
  • Python判断变量是否为Json格式的字符串示例

    2023-11-12 04:48:29
  • PHP脚本监控Nginx 502错误并自动重启php-fpm

    2023-09-26 00:11:45
  • PHP mysqli扩展库 预处理技术的使用分析

    2023-11-21 07:10:21
  • Pandas中根据条件替换列中的值的四种方式

    2022-07-25 00:27:38
  • Python使用sklearn实现的各种回归算法示例

    2021-02-18 10:00:55
  • 使用有趣的自定义标记来布局页面

    2013-11-10 19:07:48
  • Python3环境安装Scrapy爬虫框架过程及常见错误

    2021-10-19 00:01:05
  • Web UI 设计(网页设计)命名规范

    2009-05-13 13:06:00
  • MySQL8.0.23版本的root密码重置最优解法

    2024-01-17 19:52:12
  • jQuery 选择器的使用

    2008-01-21 13:07:00
  • JavaScript事件详细讲解

    2023-08-24 04:51:48
  • 错误的随机数_JavaScript

    2009-08-28 12:43:00
  • asp之家 网络编程 m.aspxhome.com