Echarts柱状图series下去掉无数据的柱子,没数据不让其柱子占位置

修改前(中间柱子没数据但是还是会占位置)
在这里插入图片描述
修改后(中间柱子没数据情况下会自动调整)
在这里插入图片描述

import * as echarts from 'echarts';

var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option;

// let data = [100, 200, 150, 80, 70, 110, 10];
// let data1 = [10, 0, 90, 10, 0, 0, 0];
let data = [
  [100, 200, 150, 80, 70, 110, 10],
  [10, 0, 90, 10, 0, 0, 0],
  [0, 90, 50, 10, 0, 0, 0]
];
option = {
  tooltip: {},
  title: {
    show: true,
    text: '不符合常理的柱状图表实现',
    textStyle: {
      fontSize: 14,
      lineHeight: 18,
      width: 10
    }
  },
  xAxis: [
    {
      type: 'category',
      axisLabel: {
        align: 'center',
        hideOverlap: true
      },
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    }
  ],
  yAxis: [
    {
      type: 'value'
    }
  ],
  series: [
    {
      type: 'custom',
      renderItem: function (params, api) {
        return getRect(params, api);
      },
      data: data[0]
    },
    {
      type: 'custom',
      renderItem: function (params, api) {
        return getRect(params, api);
      },
      data: data[1]
    },
    {
      type: 'custom',
      renderItem: function (params, api) {
        return getRect(params, api);
      },
      data: data[2]
    },

    {
      //背景
      type: 'bar',
      barWidth: '90%',
      data: [0, 0, 0, 0, 0, 0, 0],
      showBackground: true,
      backgroundStyle: {
        color: 'rgba(180, 180, 180, 0.2)'
      }
    }
  ]
};
function getRect(params, api) {
  const { seriesIndex } = params;
  var categoryIndex = api.value(0); // x轴序列
  let vald = api.value(1); //数据
  var start = api.coord([categoryIndex, vald]);
  var height = api.size([0, vald]);
  let width = ((api.getWidth() - 50) / 7) * 0.5;
  let x = start[0] - width / 2;
  let count = 0;
  data.forEach((val, i) => {
    if (val[categoryIndex]) {
      count++;
    }
  });
  if (count) {
    width = width / count;
    let i = seriesIndex >= count ? count - 1 : seriesIndex;
    x = x + i * width;
  }
  return {
    type: 'rect',
    shape: {
      x,
      y: start[1],
      width,
      height: height[1]
    },
    style: api.style()
  };
}

option && myChart.setOption(option);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃西瓜不吐籽_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值