python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > pyecharts使用formatter回调函数

pyecharts如何使用formatter回调函数的问题

作者:威斯登

这篇文章主要介绍了pyecharts如何使用formatter回调函数的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

pyecharts使用formatter回调函数

说明

笔者使用的pyecharts版本是1.7.1,如果使用0.x版本不知道是否可行,因为两个版本代码差异较大。

查看官方文档发现,formatter参数支持字符串模板和回调函数两种形式,其中字符串模板显示有四个选项:{a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)。

如下图:

可以使用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,  #选中图例
    )

运行尝试一下,如图:

发现每个散点上方显示的的一个数组[经度值,纬度值,数据值],但是我只想要显示数据值。

笔者查了很多帖子最后又查了官方文档,发现可以使用回调函数解决。

代码如下:首先要导入一个包:

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可以显示数据名。

运行看一下,如图:

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

用Jupyter Notebook来调试pyecharts中的formatter回调函数

在pyecharts中,各种Label等文字输出可以用formatter进行格式化。

但formatter那个写法看起来实在让人费解,还要各种图形的命名规则不同。

而formatter 可以接收一个回调函数来格式化出书。我发现这个回调函数居然是直接写js代码。既然它会直接渲染到前端的javascript中,那么我们可以直接加入console.log来输出params,看看里面到底是什么。

console.log的输出在哪里看?用jupyter notebook来运行你的pyechart代码,然后直接在浏览其中F12打开开发调试工具,就可以在console中看到输出了。

当然也不一定要用Jupyter notebook。pyecharts直接输出html后,在浏览器中打开,然后f12也行。不过用Jupyter notebook会方便很多,直接在浏览其中修改代码,直接看结果,直接调试。

formatter=JsCode(
                    """function(params) {
                        console.log(params.data);
                        return params.data[2];
                }"""
                )

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文