在echarts中自定义提示框内容

 
 

 
 

地址

1、期望效果

以柱状图为例,在鼠标滑过每个数据标签时,为了更友好地显示数据内容,需要对显示的数据内容作格式化处理,添加自定义内容。

如下图,鼠标滑过每个数据项时, 第1张是默认提示框; 第2张是处理成百分比数据后,显示当前单个数据项的提示框; 第3张是处理成百分比数据后,显示当前横坐标下多个数据项的提示框。

图1、默认提示框.jpg
图2、单项提示框.jpg
图3、多项提示框.jpg

2、实现

(本文代码只涉及配置项的部分代码)

上述图片的效果可用echarts的tooltip组件中的一个formatter方法实现,formatter支持字符串和回调函数两种配置方式(本文只描述回调函数的实现方式)。 (具体参考:http://echarts.baidu.com/option.html#tooltip.formatter)。

2.1 显示单项数据内容

(处理上图2提示框的效果)

/**
 * tooltip配置项示例
 */

//用formatter回调函数显示单项数据内容
tooltip: {
              trigger: 'item', 
              formatter: function(data) 
              {
                  return data.name + '<br/>' +data.seriesName + ':'+(data.value * 100)+'%'; //将小数转化为百分数显示
               }
          }
2.2 显示多项数据内容

(处理上图3提示框的效果)

/**
 * tooltip配置项示例
 */

//用formatter回调函数显示多项数据内容
tooltip: {
              trigger: 'axis', 
              formatter: function(datas) 
              {
                  var res = datas[0].name + '<br/>', val;
                  for(var i = 0, length = datas.length; i < length; i++) {
                        val = (datas[i].value*100) + '%';
                        res += datas[i].seriesName + ':' + val + '<br/>';
                    }
                    return res;
               }
          }
2.3 formatter回调函数的传参

formatter回调函数的传参格式为:

 (params: Object|Array, ticket: string, callback: (ticket: string, html: string)) => string

描述:
1、params:
(1)当tooltip的trigger为‘item’时,显示单项数据内容。formatter回调函数的第一个参数传入一个数据项对象;
(2)当tooltip的trigger为‘axis’时,显示多项数据内容数组。formatter回调函数的第一个参数传入当前类目下的数据项对象数组。
2、ticket:异步回调标识,无需关心,用作callback的传参。
3、callback:异步回调函数,传递ticket与填充内容的html两个参数。

当tooltip的trigger为‘item’时,在控制台中输出的单项数据示例对象为:

{
    $vars: ["seriesName", "name", "value"],
    color: "#c23531",
    componentSubType: "bar",
    componentType: "series",
    data: 0.6,
    dataIndex: 2,
    dataType: undefine,
    dname: "1月3日",
    seriesIndex: 0,
    seriesName: "iphone6",
    seriesType: "bar",
    value: 0.6

}

其中,几个重要的data对象属性如下:
seriesName:系列名称
value:当前数据值
name:数据名,类目名(上述柱状图中表示当前横坐标数据名)

模拟异步返回提示框内容如下:

//用formatter回调函数模拟异步返回提示框内容
tooltip: {
             trigger: 'item', 
             formatter: function(param, ticket, callback) 
             {
                 //用定时器模拟异步事件
                   setTimeout(function() {
                       var res = param.name + '<br/>' +param.seriesName + ':'+(param.value * 100)+'%';
                       callback(ticket, res);
                   }, 1000);
                   return '';//内容还没返回时显示的内容
              }
         }

3、扩展-其他配置项的formatter

3.1 直角坐标轴(xAxis/yAxis)中axisLabel的formatter

显示效果为上图2-单项提示框的y轴刻度数据。

//yAxis/xAxis配置项示例——用axisLabel 的formatter回调函数处理数据格式
yAxis: {
           name: '销量占比',
           axisLabel : {
               formatter: function(value) {
                   if(value == 0) {
                       return value;
                   }else {
                       return value*100+'%';
                  }
                        
               }
           }
         }


作者:壮哉我大前端
链接:http://www.jianshu.com/p/aa585c304660
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值