使用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()

輸出結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章