pyecharts如何使用formatter回調(diào)函數(shù)的問題
pyecharts使用formatter回調(diào)函數(shù)
說明
筆者使用的pyecharts版本是1.7.1,如果使用0.x版本不知道是否可行,因為兩個版本代碼差異較大。
查看官方文檔發(fā)現(xiàn),formatter參數(shù)支持字符串模板和回調(diào)函數(shù)兩種形式,其中字符串模板顯示有四個選項:{a}(系列名稱),(數(shù)據(jù)名稱),{c}(數(shù)值數(shù)組), vvxyksv9kd(無)。
如下圖:
可以使用formatter=‘{c}’顯示數(shù)值,將其寫入LabelOpts里,.add()代碼如下:
.add( type_="effectScatter", series_name="", data_pair=data, symbol_size=10, effect_opts=opts.EffectOpts(), label_opts=opts.LabelOpts( position="top", is_show=True, #is_show是否顯示標(biāo)簽,點上面的內(nèi)容 formatter='{c}', ), itemstyle_opts=opts.ItemStyleOpts(), is_selected=True, #選中圖例 )
運行嘗試一下,如圖:
發(fā)現(xiàn)每個散點上方顯示的的一個數(shù)組[經(jīng)度值,緯度值,數(shù)據(jù)值],但是我只想要顯示數(shù)據(jù)值。
筆者查了很多帖子最后又查了官方文檔,發(fā)現(xiàn)可以使用回調(diào)函數(shù)解決。
代碼如下:首先要導(dǎo)入一個包:
from pyecharts.commons.utils import JsCode
然后為formatter參數(shù)寫回調(diào)函數(shù),.add()代碼如下:
.add( type_="effectScatter", series_name="", data_pair=data, symbol_size=10, effect_opts=opts.EffectOpts(), label_opts=opts.LabelOpts( position="top", is_show=True, #is_show是否顯示標(biāo)簽,點上面的內(nèi)容 formatter=JsCode( #formatter為標(biāo)簽內(nèi)容格式器{a}:系列名;:數(shù)據(jù)名;{c}:數(shù)值數(shù)組也可以是回調(diào)函數(shù) """function(params) { if ('value' in params.data) { return params.data.value[2]; } }""" ),#顯示數(shù)據(jù),可以去掉經(jīng)緯度只顯示數(shù)值return params.data.value[2] + ': ' + params.data.value[0]+': ' + params.data.value[1]; ), itemstyle_opts=opts.ItemStyleOpts(), is_selected=True, #選中圖例 )
通過params.data.value[i]可以顯示數(shù)組對應(yīng)的值,例如params.data.value[0]顯示經(jīng)度值;params.data.value[1]顯示緯度值;params.data.value[2]顯示數(shù)據(jù)值。
params.data.name可以顯示數(shù)據(jù)名。
運行看一下,如圖:
可以看到,顯示的正是數(shù)據(jù)值。
用Jupyter Notebook來調(diào)試pyecharts中的formatter回調(diào)函數(shù)
在pyecharts中,各種Label等文字輸出可以用formatter進(jìn)行格式化。
但formatter那個寫法看起來實在讓人費解,還要各種圖形的命名規(guī)則不同。
而formatter 可以接收一個回調(diào)函數(shù)來格式化出書。我發(fā)現(xiàn)這個回調(diào)函數(shù)居然是直接寫js代碼。既然它會直接渲染到前端的javascript中,那么我們可以直接加入console.log來輸出params,看看里面到底是什么。
console.log的輸出在哪里看?用jupyter notebook來運行你的pyechart代碼,然后直接在瀏覽其中F12打開開發(fā)調(diào)試工具,就可以在console中看到輸出了。
當(dāng)然也不一定要用Jupyter notebook。pyecharts直接輸出html后,在瀏覽器中打開,然后f12也行。不過用Jupyter notebook會方便很多,直接在瀏覽其中修改代碼,直接看結(jié)果,直接調(diào)試。
formatter=JsCode( ? ? ? ? ? ? ? ? ? ? """function(params) { ? ? ? ? ? ? ? ? ? ? ? ? console.log(params.data); ? ? ? ? ? ? ? ? ? ? ? ? return params.data[2]; ? ? ? ? ? ? ? ? }""" ? ? ? ? ? ? ? ? )
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python基于tkinter圖形化編程實現(xiàn)簡易計算器功能
這篇文章主要為大家詳細(xì)介紹了python基于tkinter圖形化編程實現(xiàn)簡易計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07pytorch 預(yù)訓(xùn)練模型讀取修改相關(guān)參數(shù)的填坑問題
這篇文章主要介紹了pytorch 預(yù)訓(xùn)練模型讀取修改相關(guān)參數(shù)的填坑問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06Django之使用內(nèi)置函數(shù)和celery發(fā)郵件的方法示例
這篇文章主要介紹了Django之使用內(nèi)置函數(shù)和celery發(fā)郵件的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Keras搭建孿生神經(jīng)網(wǎng)絡(luò)Siamese?network比較圖片相似性
這篇文章主要為大家介紹了Keras搭建孿生神經(jīng)網(wǎng)絡(luò)Siamese?network比較圖片相似性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python?pyasn庫解析和生成ASN.1數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了Python?pyasn庫實現(xiàn)ASN.1數(shù)據(jù)結(jié)構(gòu)的解析和生成實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Python調(diào)用騰訊API實現(xiàn)人臉身份證比對功能
這篇文章主要介紹了Python調(diào)用騰訊API進(jìn)行人臉身份證比對,簡單介紹了調(diào)用騰訊云API步驟,通過完整代碼展示與結(jié)果,需要的朋友可以參考下2022-04-04python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)利用PyTorch進(jìn)行回歸運算
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)利用PyTorch進(jìn)行回歸運算的實現(xiàn)代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05