说明
笔者使用的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可以显示数据名。
运行看一下,如图:
可以看到,显示的正是数据值。