点击legend,tooltip提示

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也是一样的套路,可能判断就会多一些,思路都是一样的,所以如无必要不建议弄那么多维度在一个图上

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,196评论 0 13
  • 加班至深夜,开车回家路上很困,等到家里洗好澡,又不困了,却感觉饿。角柜里零食伸手可得,欲取还罢,最近晚饭有...
    鹤之羽阅读 828评论 0 2
  • 一、收到书啦 月初参加了简书上面一个写书评赠书的活动,填写报名表然后提交一篇自己写的书评就可能被选中,收到最新出版...
    米苏闻阅读 419评论 5 5
  • 上海翔赫妈育心东方红指导师培训心得二 第二天听了辽宁璞妈的课,才发现原来我们之前都是在对我们的身体做堵的工作,根本...
    上海雯雯妈M6阅读 258评论 0 0
  • 一事无成,没车没房,工作一塌糊涂,没有女朋友,然后还成天想些有的没的,比如人活着到底是为了什么,也许像我这样确实没...
    一个人的城围阅读 339评论 2 0