Echarts/堆叠/高度统一/显示百分比

基本样式:

vue实现代码:

RenderRightData() {
      let peitu = document.getElementById('ListBox');
      let myChart = this.$echarts.init(peitu);
      const data = this.zhu4.data
      // 指定图表的配置项和数据
      var option = {
        color: ['#F70104', '#0276EF', '#EA7631', '#409535'],//设置颜色
        title: {
          text: this.zhu4.remark,
          textStyle: {
            color: "#f2f2f2",
            fontSize: 16,
            align: "center"
          },
          left: 'center'
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: { // 坐标轴指示器,坐标轴触发有效
            type: 'line' // 默认为直线,可选为:'line' | 'shadow'
          },
          formatter: function (params) {// 这里鼠标悬浮显示对应item的每项数值
            var relVal = params[0].name;
            relVal += '<br/>' + params[0].marker + params[0].seriesName + ' : ' + data[params[0].dataIndex].one;// 统计值
            relVal += '<br/>' + params[1].marker + params[1].seriesName + ' : ' + data[params[0].dataIndex].two;// 最高值
            relVal += '<br/>' + params[2].marker + params[2].seriesName + ' : ' + data[params[0].dataIndex].three;// 最高值
            relVal += '<br/>' + params[3].marker + params[3].seriesName + ' : ' + data[params[0].dataIndex].four;// 最高值
            return relVal;
          },
        },
        // 顶部显示
        legend: {
          data: ['一类', '二类', '三类', '四类'],
          right: 20,
          // left: 120,
          top: 30,
          itemStyle: {
            // color:'#f2f2f2'
          },
          textStyle: {
            color: '#f2f2f2'
          }
        },
        // 设置下方图标的位置
        grid: {
          left: '10',
          right: '4%',
          bottom: '3%',
          top: '7%',
          containLabel: true
        },
        // 设置X轴的参数
        xAxis: [
          {
            type: 'value',
            max: 100,// 设置最大值是多少
            splitNumber: 5,// 设置分几段显示
            axisLabel: {
              show: true,
              interval: 'auto',
              color: '#f2f2f2',
              formatter: '{value} %'  // 给每个数值添加%
            },
            splitLine:{
              show:false // 不显示网格线
         },
            show: true
          },
        ],
        // 设置Y轴的参数
        yAxis: [
          {
            show: true,
            type: 'category',
            data: initDataName(),// 这里是显示名称
            axisLabel: {
              show: true,
              interval: 'auto',
              color: '#f2f2f2',
              formatter: '{value} '  // 给每个数值添加%
            },
          },
        ],
        // 设置每个item的参数
        series: [{
          name: '一类',
          type: 'bar',
          stack: '总量',
          barWidth: 10,
          label: {
            show: true,
            position: 'insideLeft',//在左边显示
            formatter: '{c}%'// 给计算后的数值添加%
          },
          //data: [13, 68.28, 85]
          data: initData('one')// 计算对应的百分比
        },
        {
          name: '二类',
          type: 'bar',
          stack: '总量',
          label: {
            show: true,
            position: 'insideRight',// 在右边显示
            formatter: '{c}%'
          },
          data: initData('two')
        },
        {
          name: '三类',
          type: 'bar',
          stack: '总量',
          label: {
            show: true,
            position: 'insideRight',// 在右边显示
            formatter: '{c}%'
          },
          data: initData('three')
        },
        {
          name: '四类',
          type: 'bar',
          stack: '总量',
          label: {
            show: true,
            position: 'insideRight',// 在右边显示
            formatter: '{c}%'
          },
          data: initData('four')
        },
        ]
      };
      // 显示左侧名称
      function initDataName() {
        var nameList = []
        for (var i = 0; i < data.length; i++) {
          nameList.push(data[i].name)
        }
        return nameList
      }
      //计算统计值和最高值
      function initData(val) {
        var serie = [];
        for (var i = 0; i < data.length; i++) {
          var num = 0
          if (val == 'one') {//计算统计值
            num = data[i].one
          } else if (val == 'two') {//计算最高值
            num = data[i].two
          } else if (val == 'three') {
            num = data[i].three
          } else {
            num = data[i].four
          }
          var total = (parseFloat(data[i].one) + parseFloat(data[i].two)
            + parseFloat(data[i].three) + parseFloat(data[i].four)).toFixed(2);
          var numcount = Percentage(num, total)
          serie.push(numcount);
        }
        return serie;
      }
      //计算两者占比
      function Percentage(num, total) {
        return (Math.round(num / total * 10000) / 100.00);// 小数点后两位百分比
      }
      // 使用刚指定的配置项和数据显示图表。
      myChart.setOption(option);
      window.addEventListener('resize', () => {
        myChart.resize()
      })
    },

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值