天天看点

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回调函数

可以看到,显示的正是数据值。