echarts柱状图展现区间数据

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  <div id="main" style="margin: 30px; padding: 10px; border: 1px solid #ddd; width: 800px;height:400px;"></div>

  <!-- <script src="https://cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js"></script> -->
  <!-- <script src="../lib/echarts.min.js"></script> -->
  <!-- <script src="../lib/lodash.4.17.5.js"></script> -->
  <script src="https://cdn.staticfile.org/echarts/5.4.1/echarts.min.js"></script>
  <script src="https://cdn.staticfile.org/lodash.js/4.17.21/lodash.min.js"></script>

  <script type="text/javascript">
   // 借鉴
    // 1. https://echarts.apache.org/examples/zh/editor.html?c=bar-waterfall
    // 2. https://echarts.apache.org/examples/zh/editor.html?c=bar-waterfall2

    var isReverse = false;
    var showLabel = true;

    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));
    var option = setOption();
    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);

    function isReverseFn () {
      isReverse = !isReverse;
      option = setOption();
      myChart.setOption(option);
    }

    function setOption() {
      let option;

      const category = ["北京", "上海", "南京", "天津", "杭州", "苏州"];
      const name = ['苹果收获了', '橙子收获了'];
      const data = [
        [
          [0, 2900],
          [1700, 2900],
          [1400, 1700],
          [1200, 1400],
          [300, 900],
          [0, 300]
        ],
        [
          [3500, 3800],
          [3800, 4200],
          [2430, 3800],
          [2200, 2900],
          [1300, 1400],
          [800, 3000]
        ]
      ]
	  let first = data[0];
	  let second = data[1];
	  first.forEach((item, i) => {
		item.push('red')
	  })
	  second.forEach((item, i) => {
		item.push('blue')
	  })
      
      let series = [];
      data.forEach((item, i) => {
        series = [...series, ...createSeries(item, name[i], showLabel, isReverse)]
      })

      let yAxis = {
        type: 'value'
      }

      let xAxis = {
        type: 'category',
        splitLine: {
          show: false
        },
        data: category
      }

      if (isReverse) {
        [xAxis, yAxis] = [yAxis, xAxis];
      }

      option = {
        title: {
          text: '城市水果收获',
          // subtext: 'From ExcelHome',
          // sublink: 'http://e.weibo.com/1341556070/AjQH99che'
        },
        color: ['lawngreen', 'orange'],
        legend: {
          data: name
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: { // 坐标轴指示器,坐标轴触发有效
            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
          },
          formatter: function (params) {
            var html = '';
            var axisValue = '';
            params.forEach(item => {
              axisValue = item.axisValue;
              const range = item.data.range;
              html += item.marker + item.name + range[0] + ' - ' + range[1] + '<br/>';
            })
            const {name, data: {range}} = params[0];
            return axisValue + '<br/>' + html;
          }
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true
        },
        xAxis: xAxis,
        yAxis: yAxis,
        series: series
      };

      return option;
    }

    // 轴数据处理
    function dataFormat (data, name, isReverse) {
      let min = []; // 区间的最小值
      let max = []; // 区间的最大值
      let minLabel = []; // 显示区间的最小值的 label 数据,在 max 上通过 markpoint 实现,以控制 label 颜色值和显示的柱子颜色值一致,并且显示隐藏有效

      data.forEach((item, i) => {
        min.push(item[0])

        // 横向:coord: [offsetx,y],等同于 xAxis: offsetx, yAxis: y。其中,offsetx 表示偏移值,y 表示bar的索引。
        // 竖向:[x, offsety]
        const coord = isReverse ? [item[0], i] : [i, item[0]];
        minLabel.push({
          value: item[0], // 对值进行格式化
          coord: item[0] ? coord : []
        })

        max.push({
          value: item[1] - item[0], // 差值作为叠加值
          range: item, // tooltip 显示
          name, // legend 显示
          label: {
            formatter: '' + item[1], // 最终值作为显示值
          },
          itemStyle: {
            color: item[2]
          }
        })
      })

      return {
        min,
        max,
        minLabel
      }
    }

    // 生成序列数据
    function createSeries (arr, name, showLabel, isReverse) {
      let newSeries = [];

      const {min, max, minLabel} = dataFormat(arr, name, isReverse);
      
      const maxPosition = isReverse ? 'right' : 'top';
      const minPosition = isReverse ? 'left' : 'bottom';

      newSeries = [
        {
          type: 'bar',
          stack: name,
          tooltip: {
            show: false
          },
          // 透明
          itemStyle: {
            barBorderColor: 'rgba(0,0,0,0)',
            color: 'rgba(0,0,0,0)'
          },
          emphasis: {
            itemStyle: {
              barBorderColor: 'rgba(0,0,0,0)',
              color: 'rgba(0,0,0,0)'
            }
          },
          label: {
            show: false,
          },
          data: min
        },
        {
          type: 'bar',
          stack: name,
          name: name,
          tooltip: {
            show: true,
          },
          label: {
            show: showLabel,
            position: maxPosition,
          },
          markPoint: {
            symbol: 'rect',
            // 图形上面的小头隐藏
            symbolSize: 0.000000000000001,
            label: {
              show: showLabel,
              position: minPosition,
            },
            data: minLabel
          },
          data: max,
        }
      ]

      return newSeries;
    }
  </script>
</body>

</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
echarts中,可以通过设置柱状图的最小值和最大值来限定柱状图的显示区间。具体的区间设置方法如下: 1. 首先,你可以使用xAxis和yAxis配置项来设置x轴和y轴的相关属性。其中,yAxis可以用来设置y轴的最小值和最大值。 2. 在yAxis配置项中,可以使用min和max属性来设置y轴的最小值和最大值,从而限定柱状图的显示区间。例如,你可以将最小值设置为0,最大值设置为100,这样柱状图的数值范围就被限制在0到100之间。 3. 另外,你还可以使用splitNumber属性来设置y轴的分割段数,以便更好地展示柱状图数据分布情况。 4. 最后,你可以使用tooltip配置项来设置当鼠标悬停在柱状图上时显示的提示内容,以便更好地向用户展示柱状图的具体数值。 综上所述,通过配置yAxis的min和max属性来设置echarts柱状图的显示区间,并使用tooltip配置项来显示具体数值。同时,你还可以根据实际需求设置yAxis的splitNumber属性来调整y轴的分割段数,以获得更好的数据展示效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [echarts横向柱状图](https://download.csdn.net/download/qq_42396791/11856336)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【微信小程序】echarts 正态分布图 区间柱形图](https://blog.csdn.net/qq_40558766/article/details/115868627)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [echarts 图表 设置柱状图,并将数据区域缩放20-40区间](https://blog.csdn.net/qq_46011557/article/details/123668268)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孙大大啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值