Python - pyecharts:直接將圖片保存為 png, pdf, gif 格式的文件


 參考一

關鍵:使用 pyecharts-snapshot插件

第一步:安裝phantomjs

打開系統命令行,鍵入下列代碼:

npm install -g phantomjs-prebuilt

第二步:安裝了 Nodejs 環境

下載鏈接:https://nodejs.org/en/download/

第三步:安裝 pyecharts-snapshot

pip install pyecharts-snapshot

第四步:重啟計算機,render(path=“”)的輸出路徑和格式即可

 

參考二

pyecharts生成的網頁圖像如果直接截圖,圖片分辨率較低,不適合用於演示。因此可以考慮將其轉換為jpg等格式使用。網上搜到的大部分采用pyecharts-snapshot方式來進行轉換。通常的方法是:

(1)安裝phantomjs  (下載地址:http://phantomjs.org/download.html),這個版本相對固定,一般不需考慮版本問題。

(2)安裝node.js (我的電腦上一直裝有node.js,因此不確定該安裝是否必須) https://nodejs.org/en/download/

(3)安裝pyecharts-snapshot         

pip install pyecharts-snapshot

(4)使用snapshot進行轉換 

from pyecharts import Line, Pie, Grid
from pyecharts_snapshot.main import make_a_snapshot
 
attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [5, 20, 36, 10, 10, 100]
v2 = [55, 60, 16, 20, 15, 80]
line = Line("折線圖示例")
line.add("商家A", attr, v1, mark_point=["average"])
line.add("商家B", attr, v2, is_smooth=True, mark_line=["max", "average"])
line.render('test.html')
 
make_a_snapshot('test.html', 'test.pdf'

然而,不幸的是,我照搬這種方法,程序運行沒有任何錯誤提示,但是出現兩個警告信息

 RuntimeWarning: coroutine 'make_a_snapshot' was never awaited
 RuntimeWarning: Enable tracemalloc to get the object allocation traceback

           然后,沒有寫任何文件!幾經搜索,發現問題出在python版本上,據pyecharts (https://github.com/pyecharts)github社區中明確表示上述方法不支持python3.6 3.7等版本。可以使用snapshot-phantomjs替代。

        (萬惡的版本問題,不知道有多少初學者因為版本問題而從入門到放棄了。反正筆者當年安裝keras、TensorFlow等各種版本切換,差點就瘋了。不過堅持下來,會發現多解決一些問題,積累一些經驗,在遇到技術問題,心里就沒有剛開始那么緊張和無助了)。

         下面我就直接安裝。因為已經安裝了phantomjs 和node.js了,所以不確定除了phantomjs,是否還需要node.js

        (1)還是先安裝snapshot-phantomjs。     

pip install snapshot-phantomjs

我是使用的清華鏡像,所以pip install的速度還是飛快的。如果安裝速度慢的,可以考慮使用國內鏡像。 當然,高手也可以直接在GitHub上下載源文件(https://github.com/pyecharts/snapshot-phantomjs)。

       (2)當然就是使用了。下面是使用的基本結構:

from snapshot_phantomjs import snapshot
from pyecharts.render import make_snapshot
 
 
make_snapshot(snapshot,"*.html","*.svg")#生成svg圖片

至此,大功告成了。在snapshot.py文件中可以看到,它支持的文件格式有如下幾種。

PNG_FORMAT = "png"
JPG_FORMAT = "jpeg"
GIF_FORMAT = "gif"
PDF_FORMAT = "pdf"
SVG_FORMAT = "svg"
EPS_FORMAT = "eps"
B64_FORMAT = "base64"

因此,在輸出的文件后綴名中,要嚴格按照上面的幾個字符串來寫,不然會有錯誤提示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM