echarts 叠加柱状图柱顶显示百分比

 

采坑:

  1. formatter不起作用:使用 formatter: function (params) 只能直接setOption,不能使用this.option

  2. 柱顶的百分比其实是一个另一截的柱,只是颜色为白色,值小于1;然后使用 formatter: function展示为百分比

    renderChart () {
      // 线上问题总量柱状图,按产研部门统计(如教学、服务运营)
      var chart1Line = echarts.init(document.getElementById('chart1'))
      if (this.caughtStatus === '1') {
        // var optionChart2 = this.echarts.init(document.getElementById('allData'))
        if (this.departments.restData.length !== 0) {
          chart1Line.setOption({
            grid: {
              bottom: '25%'
            },
            title: {
              text: '线上问题拦截率(' + this.departments.caught + '%)',
              x: 'center'
            },
            tooltip: {
              trigger: 'axis',
              formatter: function (params) {
                console.log('22')
                console.log(params)
                var display = params[0].axisValue + '<br>已拦截:' + params[0].data + '<br>未拦截:' + params[1].data + '<br>拦截率:' + params[2].data * 100 + '%'
                return display
                // if (params.data > 0) {
                //   return (params.data * 100) + '%'
                // } else {
                //   return params.data
                // }
              }
            },
            legend: {
              orient: 'vertical',
              x: '85%',
              y: 'top',
              itemWidth: 15,
              itemHeight: 15,
              data: ['已拦截', '未拦截', '']
            },
            xAxis: {
              name: '',
              type: 'category',
              data: this.departments.departments,
              axisLabel: {
                interval: 0,
                rotate: -30
              }
            },
            yAxis: {
              type: 'value',
              name: '单位(个)'
            },
            series: [
              {
                name: '已拦截',
                type: 'bar',
                stack: '拦截情况',
                data: this.departments.restData,
                itemStyle: {
                  color: '#3FBB49'
                },
                label: {
                  show: true,
                  position: 'inside',
                  textStyle: {
                    color: 'black'
                  }
                },
                barWidth: '40px'
              },
              {
                name: '未拦截',
                type: 'bar',
                stack: '拦截情况',
                data: this.departments.onlineData,
                itemStyle: {
                  color: '#FF8849'
                },
                label: {
                  show: true,
                  position: 'inside',
                  formatter: function (params) {
                    if (params.value > 0) {
                      return params.value
                    } else {
                      return ''
                    }
                  },
                  textStyle: {
                    color: 'black'
                  }
                },
                barWidth: '40px'
              },
              {
                name: '拦截率',
                type: 'bar',
                stack: '拦截情况',
                data: this.departments.caughtRate,
                itemStyle: {
                  color: '#FFFFFF'
                },
                label: {
                  show: true,
                  position: 'insideBottom', // 关键
                  formatter: function (params) {
                    if (params.data > 0) {
                      return (params.data * 100) + '%'
                    } else {
                      return ''
                    }
                  },
                  textStyle: {
                    color: 'black'
                  }
                },
                barWidth: '40px'
              }
            ]
          })
        }

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,可以使用tooltip的formatter属性来自定义echarts叠加柱状图的tooltip样式。具体的设置如下: ```javascript tooltip: { formatter: (params) => { let str = ''; str = ` <div class="ehover" style="width:80px;background: #FFFFFF;font-family: Microsoft YaHei;"> <h3 style="height:14px;font-size:14px;font-weight:400;line-height:14px;color:#333333;"> ${params\[0\].name} </h3> <ul style="margin:0;paddding:0;list-style:none;color: #333333;font-size: 14px;"> `; for (let i = params.length - 1; i > 0; i--) { str += ` <li style="display:flex;justify-content:space-between;margin-top:6px;height: 15px;"> <p>${params\[i\].marker} ${params\[i\].seriesName}</p> <p style="font-weight: 400;">${params\[i\].value}</p> </li> `; } str += ` </ul> </div> `; return str; }, padding: 20, extraCssText: 'box-shadow:-2px 0px 9px 2px rgba(61,126,255,0.45)', color: '#333333', } ``` 以上代码中,formatter函数用于自定义tooltip的内容和样式。通过遍历params数组,可以获取到每个series的名称、标记和数值,并将其以自定义的样式展示在tooltip中。padding属性用于设置tooltip的内边距,extraCssText属性用于设置tooltip的阴影效果,color属性用于设置文字颜色。 同时,根据引用\[3\]的内容,还可以使用trigger和axisPointer属性来设置tooltip的触发方式和指示器样式。例如,可以将trigger设置为'axis',axisPointer设置为'shadow',以实现在鼠标悬停在柱状图上时显示tooltip,并且tooltip的指示器为阴影效果。 此外,根据引用\[3\]的内容,还可以通过设置xAxis和yAxis属性来配置x轴和y轴的相关设置,通过设置series属性来配置柱状图的数据系列。 综上所述,以上代码提供了一种设置echarts叠加柱状图tooltip的方法。 #### 引用[.reference_title] - *1* *2* [echarts 堆叠柱状图 tooltip倒序展示数据](https://blog.csdn.net/m0_48571414/article/details/127734130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [echarts 柱状图 tooltip 加单位](https://blog.csdn.net/qq_43780814/article/details/120762738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值