美文网首页
点击legend,tooltip提示

点击legend,tooltip提示

作者: 神话降临 | 来源:发表于2018-11-02 10:00 被阅读0次
image.png

如果不加单位,对于echarts本身提供的tooltip提示已经够用了,点击legend后tooltip显示的也很正常
但是如果需要添加单位,就需要重写一下tooltip

代码
  tooltip:{
        show: true,
           trigger: 'axis',
           axisPointer : {            // 坐标轴指示器,坐标轴触发有效
             type : 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
           },
          formatter: function(param){
              return param[0].marker + param[0].seriesName + ": "  + param[0].data  + "件" + "</br>"+
                     param[1].marker+param[1].seriesName + ": " + param[1].data + "元"
          }
    },
效果图
image.png

在这里看到的也是正常的,

报错点

但是如果你点击了legend就会报错告诉你data没有找到

原因

因为你关闭掉一个legend时,打印出来的param的数组长度会变成1,就会报错,legend都关闭后报错,因为数组为空

解决它

这个时候我们就需要在formatter函数里判断
这个时候的判断准则就是数组的长度,如上面的情况只有两种情况
第一种情况 param长度是2的时候显示
第二种情况 param长度是1的显示,这个时候又有两种情况只有一个销量,或者只有一个金额
分析过后代码实现它,贴上全部代码可以直接放到e'charts官网demo上运行

option = {
    tooltip:{
        show: true,
           trigger: 'axis',
           axisPointer : {            // 坐标轴指示器,坐标轴触发有效
             type : 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
           },
          formatter: function(param){
              if(param.length === 2){
                 return param[0].marker+param[0].seriesName + ": "  + param[0].data + "件" + "</br>"+
                        param[1].marker + param[1].seriesName + ": " + param[1].data + "元"
              }else{
                  if(param[0].seriesName === "销量"){ 
                      return param[0].marker + param[0].seriesName + ": "  + param[0].data  + "件"
                      
                  }else{
                      return param[0].marker+param[0].seriesName + ": " +param[0].data + "元"
                  }
              }
          }
    },
    legend:{
        data:["销量","金额"]
    },
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis:[
         {
        type: 'value'
    },
     {
        type: 'value'
    }],
    series: [
        {
        name: "销量",    
        data: [12, 20, 15, 8, 7, 11, 13],
        type: 'bar'
    },
    {
        name: "金额",
        yAxisIndex: 1,
        data: [165, 134, 199, 80, 70, 110, 130],
        type: 'bar'
    }
    ]
};

如果是3个legend也是一样的套路,可能判断就会多一些,思路都是一样的,所以如无必要不建议弄那么多维度在一个图上

相关文章

网友评论

      本文标题:点击legend,tooltip提示

      本文链接:https://www.haomeiwen.com/subject/nwuxxqtx.html