Echarts图表柱状图x轴数据过多,堆叠处理

前言:

echarts会遇到这种情况,以柱状图为例子,当数据过多时,echarts图就会堆叠在一起,看起来十分难看。通常是通过配置dataZoom来解决问题,但是这不是最佳的处理方案,我们可以根据柱状图X轴数据长度并配合dataZoom来实现最佳的显示效果。

首先先看一下没有修改之前的效果:

对应的dataZoom配置:

 dataZoom: [
   {
        type: 'slider',
        realtime: true,
        start: 0,
         end: 100,
        show: true,
        height: fontSize(0.12),
        bottom: 0,
        handleSize: 0, // 左右2个滑动条的大小
        borderColor: '#fff', // 滑动通道的边框颜色
        showDetail: false,
        fillerColor: '#eee',
        backgroundColor: '#fff', // 未选中的滑动条的颜色
        showDataShadow: false, // 是否显示数据阴影 默认auto

   }
]

再来看一下,对dataZoom简单配置后的样式变化:

看一下配置了什么地方: 

 dataZoom: [
      {
        type: 'slider',
        realtime: true,
        start: 0,
        end: 100,
        show: true,
        height: fontSize(0.12),
        bottom: 0,
        handleSize: 0, // 左右2个滑动条的大小
        borderColor: '#fff', // 滑动通道的边框颜色
        showDetail: false,
        fillerColor: '#eee',
        backgroundColor: '#fff', // 未选中的滑动条的颜色
        showDataShadow: false, // 是否显示数据阴影 默认auto
      },
      {
        //没有下面这块的话,只能拖动滚动条,鼠标滚轮在区域内不能控制外部滚动条(当前滑块可控制)
        type: 'inside',
        realtime: true,
        start: 0,
        end: 100,
      },
    ],

 但是现在有一个问题需要考虑,如果是x轴数量比较少的时候,柱子之间的间隙又会很大,看不全数据,比如这样:

解决方案: 

动态设置dataZoom的end属性

//根据x轴数量,动态展示滑块标签(当x轴数量>13,滑动块显示前30%标签,否则显示100%)
const dataZoomEnd = xAxis.length > 13 ? (13 / xAxis.length) * 100 : 100
dataZoom: [
      {
        show: dataZoomEnd == 100 ? false : true,
        type: 'slider',
        realtime: true,
        start: 0,
        end: dataZoomEnd,
        height: fontSize(0.12),
        bottom: 0,
        handleSize: 0, // 左右2个滑动条的大小
        borderColor: '#fff', // 滑动通道的边框颜色
        showDetail: false,
        fillerColor: '#eee',
        backgroundColor: '#fff', // 未选中的滑动条的颜色
        showDataShadow: false, // 是否显示数据阴影 默认auto
      },
      {
      {
        // 没有下面这块的话,只能拖动滚动条,鼠标滚轮在区域内不能控制外部滚动条(当前滑块可控制)
        type: 'inside',
        realtime: true,
        start: 0,
        end: dataZoomEnd,
      },
]

以上全。有更好的方案,欢迎留言补充。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-05 18:32:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-05 18:32:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-05 18:32:05       82 阅读
  4. Python语言-面向对象

    2024-01-05 18:32:05       91 阅读

热门阅读

  1. Moment.js 使用

    2024-01-05 18:32:05       49 阅读
  2. 个人开发常用的eslint规则,适用vue、react

    2024-01-05 18:32:05       68 阅读
  3. 4. 动态SQL

    2024-01-05 18:32:05       48 阅读
  4. px、rpx、em以及rem的区别与用法

    2024-01-05 18:32:05       63 阅读
  5. 面试算法79:所有子集

    2024-01-05 18:32:05       52 阅读
  6. 数据结构OJ实验11-拓扑排序与最短路径

    2024-01-05 18:32:05       45 阅读
  7. Python学习笔记(四)流程控制方法

    2024-01-05 18:32:05       45 阅读
  8. STM32 基础知识(探索者开发板)--115讲 OLED

    2024-01-05 18:32:05       54 阅读
  9. itextpdf中文不显示问题

    2024-01-05 18:32:05       59 阅读
  10. React16源码: Hooks源码实现

    2024-01-05 18:32:05       50 阅读
  11. GreatSQL社区2023全年技术文章总结

    2024-01-05 18:32:05       59 阅读
  12. 7-24 约分最简分式 分数 15

    2024-01-05 18:32:05       55 阅读