天天看點

pyecharts如何使用formatter回調函數

說明

筆者使用的pyecharts版本是1.7.1,如果使用0.x版本不知道是否可行,因為兩個版本代碼差異較大。

檢視官方文檔發現,formatter參數支援字元串模闆和回調函數兩種形式,其中字元串模闆顯示有四個選項:{a}(系列名稱),{b}(資料名稱),{c}(數值數組), {d}(無)。如下圖:

pyecharts如何使用formatter回調函數

可以使用formatter=‘{c}’顯示數值,将其寫入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是否顯示标簽,點上面的内容
            formatter='{c}',
            ), 
        itemstyle_opts=opts.ItemStyleOpts(),
        is_selected=True,  #選中圖例
    )
           

運作嘗試一下,如圖:

pyecharts如何使用formatter回調函數

發現每個散點上方顯示的的一個數組[經度值,緯度值,資料值],但是我隻想要顯示資料值。

筆者查了很多文章最後又查了官方文檔,發現可以使用回調函數解決。

代碼如下:

首先要導入一個包:

from pyecharts.commons.utils import JsCode
           

然後為formatter參數寫回調函數,.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是否顯示标簽,點上面的内容
            formatter=JsCode(                  #formatter為标簽内容格式器{a}:系列名;{b}:資料名;{c}:數值數組也可以是回調函數    
                    """function(params) {
                    if ('value' in params.data) {
                        return params.data.value[2];
                    }
                }"""
                ),#顯示資料,可以去掉經緯度隻顯示數值return params.data.value[2] + ': ' + params.data.value[0]+': ' + params.data.value[1];
            ), 
        itemstyle_opts=opts.ItemStyleOpts(),
        is_selected=True,  #選中圖例
    )
           

通過params.data.value[i]可以顯示數組對應的值,例如params.data.value[0]顯示經度值;params.data.value[1]顯示緯度值;params.data.value[2]顯示資料值。params.data.name可以顯示資料名。

運作看一下,如圖:

pyecharts如何使用formatter回調函數

可以看到,顯示的正是資料值。