Flask使用Pyecharts在單個(gè)頁(yè)面展示多個(gè)圖表的方法
在Flask頁(yè)面展示echarts,主要有兩種方法:
方法1、原生echarts方法
自己在前端引入echarts.js文件、自己創(chuàng)建div、自己初始化echarts對(duì)象、自己從官網(wǎng)復(fù)制并且配置圖表、自己給echarts對(duì)象設(shè)置配置項(xiàng)實(shí)現(xiàn)繪制,這種方法的缺點(diǎn)是配置項(xiàng)都是js的形式比較繁瑣,對(duì)于后端開(kāi)發(fā)人員來(lái)說(shuō)有點(diǎn)過(guò)于參與前端js部分的配置開(kāi)發(fā);
這種方式參照echarts官網(wǎng)的方式,其實(shí)跟flask沒(méi)有多大關(guān)系,php/java不同后端語(yǔ)言都一樣,地址
方法2:使用pyecharts
pyecharts主要是做了一件事情,把js的配置option,完全抽離使用Python代碼配置,把js的數(shù)據(jù)結(jié)構(gòu)使用python的代碼結(jié)構(gòu)實(shí)現(xiàn),讓后端開(kāi)發(fā)只需要配置數(shù)據(jù)就能搞定圖表,真的很像matplotlib,當(dāng)然echarts的強(qiáng)大使得pyecharts更強(qiáng)大;
但是這里真的要吐槽pyecharts,因?yàn)樗喾N輸出圖表結(jié)果的方式,沒(méi)有一種是能夠和flask完美配合的:
- render()方法:默認(rèn)會(huì)在當(dāng)前目錄生成 render.html 文件;這是什么鬼,什么場(chǎng)景會(huì)用到這種方式,竟然是默認(rèn)的方式?真是怪異;
- render()方法傳入路徑參數(shù):傳入路徑參數(shù),如 bar.render(“mycharts.html”),這種方法好一點(diǎn),可以設(shè)定文件路徑,但是為毛要輸出一個(gè)HTML,另外一點(diǎn),我做一個(gè)網(wǎng)頁(yè),難道這個(gè)網(wǎng)頁(yè)上除了這個(gè)圖表沒(méi)有其他數(shù)據(jù)和展示了?只有一個(gè)大大的echarts圖表?
- render_notebook()方法:這個(gè)方法能用在notebook中,這個(gè)我不吐槽,因?yàn)槿绻褂胣otebook,這個(gè)方法很好用,但是我要用于flask網(wǎng)頁(yè)展示;
- render_embed()方法:來(lái)自pyecharts的flask一章中的Markup(c.render_embed()),我估計(jì)作者根本沒(méi)寫(xiě)過(guò)flask代碼,不然為毛flask網(wǎng)頁(yè)中只能展示一個(gè)echarts圖表,我其他的數(shù)據(jù)展示,怎么用這個(gè)方法設(shè)置?我試圖把render_embed()的結(jié)果傳遞給flask模板,結(jié)果發(fā)現(xiàn)這個(gè)函數(shù)的返回是一個(gè)整個(gè)HTML;
- chart.dump_options()方法:這個(gè)方法是唯一一個(gè)我覺(jué)得能和flask配合不錯(cuò)的方法,能夠?qū)崿F(xiàn)一個(gè)flask網(wǎng)頁(yè)中繪制很多個(gè)圖表;然而卻依然需要自己引入echarts.js文件、自己設(shè)定div、自己初始化echarts對(duì)象、自己給echarts對(duì)象設(shè)置圖表配置,唯一簡(jiǎn)化的就是圖表配置是來(lái)自于python服務(wù)端;
最后給出使用chart.dump_options()
方法給一個(gè)flask網(wǎng)頁(yè)配置多個(gè)圖表的方法代碼:
Python代碼:
@app.route("/show_pyecharts") def show_pyecharts(): bar = ( Bar() .add_xaxis(["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]) .add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) ) # print(bar.render_embed()) # print(bar.dump_options()) return render_template( "show_pyecharts.html", bar_data=bar.dump_options() )
Flask模板代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="/static/echarts.min.js"></script> </head> <body> <h1>柱狀圖</h1> <div> <!-- 為ECharts準(zhǔn)備一個(gè)具備大小(寬高)的Dom --> <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 基于準(zhǔn)備好的dom,初始化echarts實(shí)例 var myChart = echarts.init(document.getElementById('main')); // 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。 myChart.setOption({{ bar_data | safe }}); </script> <!-- 為ECharts準(zhǔn)備一個(gè)具備大?。▽捀撸┑腄om --> <div id="main2" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 基于準(zhǔn)備好的dom,初始化echarts實(shí)例 var myChart2 = echarts.init(document.getElementById('main2')); // 指定圖表的配置項(xiàng)和數(shù)據(jù) var option2 = {{ bar_data | safe }}; // 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。 myChart2.setOption(option2); </script> </div> </body> </html>
展示輸出:
總結(jié)
以上所述是小編給大家介紹的Flask使用Pyecharts在單個(gè)頁(yè)面展示多個(gè)圖表的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python實(shí)現(xiàn)從N個(gè)數(shù)中找到最大的K個(gè)數(shù)
這篇文章主要介紹了Python實(shí)現(xiàn)從N個(gè)數(shù)中找到最大的K個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04python實(shí)現(xiàn)在每個(gè)獨(dú)立進(jìn)程中運(yùn)行一個(gè)函數(shù)的方法
這篇文章主要介紹了python實(shí)現(xiàn)在每個(gè)獨(dú)立進(jìn)程中運(yùn)行一個(gè)函數(shù)的方法,涉及Python操作進(jìn)程的相關(guān)技巧,需要的朋友可以參考下2015-04-04python中argparse模塊及action='store_true'詳解
argparse?是一個(gè)用來(lái)解析命令行參數(shù)的?Python?庫(kù),它是?Python?標(biāo)準(zhǔn)庫(kù)的一部分,這篇文章主要介紹了python中argparse模塊及action=‘store_true‘詳解,需要的朋友可以參考下2023-02-02Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn)
這篇文章主要介紹了Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12基于Python2、Python3中reload()的不同用法介紹
今天小編就為大家分享一篇基于Python2、Python3中reload()的不同用法介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python實(shí)現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)圖像尺寸獲取和格式轉(zhuǎn)換處理的功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-04-04Python數(shù)據(jù)分析中Groupby用法之通過(guò)字典或Series進(jìn)行分組的實(shí)例
下面小編就為大家分享一篇Python數(shù)據(jù)分析中Groupby用法之通過(guò)字典或Series進(jìn)行分組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12Python中Array特性與應(yīng)用實(shí)例深入探究
這篇文章主要為大家介紹了Python中Array特性與應(yīng)用實(shí)例深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01