使用phantomjs將pyecharts生成的html渲染為png


以前用pyecharts對每日數據可視化,無奈郵件沒法發送包含js的網頁,這可累壞我了。考慮了幾個小時,最后決定把echarts生成的HTML文件渲染成圖片在給郵件發送給各位領導。

echarts的官網有實現方法,比較簡單。

snapshot-phantomjs

安裝

$ pip install snapshot-phantomjs

snapshot-phantomjs 是 pyecharts + phantomjs 渲染圖片的擴展,需要先安裝 phantomjs,安裝方法請參照官網 phantomjs.org/download.html

使用

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,而不是從源碼里面追訴問題。不過,意料之中,報錯始終如一。

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

定義一下,

file_path = "{}/".format(os.path.dirname(os.path.abspath("/root/echarts.min.js")))

再定義函數的調用

Bar(init_opts=opts.InitOpts(js_host=file_path))

 

電腦忽傳圖片成,初聞涕淚滿衣裳。
卻看時間早下班,慢關電腦喜欲狂。
白日放歌須縱酒,所以只能到晚上。
即從步行等公交,便下凌塘向飯堂。

 

 




免責聲明!

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



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