使用pyecharts输出图片

最近想用pyecharts画节点之间的关系图,看了pyecharts官网上的关系图示例后就开始迫不及待的跑demo了,但发现demo的输出是html文件,而我需要将关系图批量的输出为图片,于是就开始各种查资料,找pyecharts输出为图片的方法,看了很多资料,安装好几个python包,但那个demo还是没有跑通。最后实在没办法又回到官网来寻找资料,没想到踏破铁鞋无觅处,得来全不费工夫!官网上已经总结好了这个问题的解决方案。

pyecharts 提供了 seleniumphantomjs 两种方式。

第一种方法需要安装snapshot-selenium,并且需要做一些其他的配置。(snapshot-selenium 是 pyecharts + selenium 渲染图片的扩展,使用 selenium 需要配置 browser driver,这部分可以参考 selenium-python 相关介绍,推荐使用 Chrome 浏览器,可以开启 headless 模式。目前支持 Chrome, Safari。)

pip install snapshot-selenium

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

pip install snapshot-phantomjs

在这里只介绍第二种方法,因为第一种方法的配置比较复杂,我尝试了,但是没有成功,可能是有些东西配置的有问题。

使用示例

from pyecharts import options as opts
from pyecharts.charts import Graph, Page
from pyecharts.render import make_snapshot

from snapshot_phantomjs import snapshot

def graph_base() -> Graph:
    nodes = [
        {"name": "结点1", "symbolSize": 10},
        {"name": "结点2", "symbolSize": 20},
        {"name": "结点3", "symbolSize": 30},
        {"name": "结点4", "symbolSize": 40},
        {"name": "结点5", "symbolSize": 50},
        {"name": "结点6", "symbolSize": 40},
        {"name": "结点7", "symbolSize": 30},
        {"name": "结点8", "symbolSize": 20},
    ]
    links = []
    for i in nodes:
        for j in nodes:
            links.append({"source": i.get("name"), "target": j.get("name")})
    c = (
        Graph()
        .add("", nodes, links, repulsion=8000)
        .set_global_opts(title_opts=opts.TitleOpts(title="Graph-基本示例"))
    )
    return c

def main():
    g = graph_base()
    make_snapshot(snapshot, g.render(), "nodes0.png")

if __name__ == "__main__":
    main()

输出结果

使用pyecharts输出图片_第1张图片

 

你可能感兴趣的:(小问题,Python)