echarts连续数据,数据量较少时柱体溢出Y轴或者canvas问题

场景

需求画一个柱状图,准确来说是一个直方图。数据是连续的,根据echarts文档,连续数据使用了Xaxis.type="value",效果还不错,但是出现一个问题。当数据量比较少时候,比如只有两个柱体或者三个柱体时候,出现溢出。如下图

测试后只有2、3、4个柱体都会溢出。

观察发现前后都溢出,第一想法,设置最大最小值,限制出去,因为步长是一致的

步长一致,且连续,那么就是有序的,即可得出:

最大值=数据最后一项+步长
最小值=数据第一项-步长

再给Xaxis设置min 以及 max

解决问题,数量小的问题。

但是同时引出新问题

新的问题

上面解决数据量少的问题后,当数据量够多时候,也就是数据量大于4的时候。如下图

因为设置了最大最小值,导致最后多出一条分割线,影响视觉效果。因为数据最后一个点是128,所以多出来的线就是8导致的。

上面的方案已经无法解决这个问题了(或者说解决起来很麻烦,需要大量计算)

经上面测试,只有2,3,4这三种情况会出现溢出问题,那么针对这三种情况,使用

boundaryGap:["30%","30%"];

解决呢?

测试后发现,不同数量的主题对应的gap值也不一样才能达到完美状态。立即写出代码,也是结论,看代码

  switch(x.length){
    case 2:{
      boundaryGap=["30%","30%"];
      break;
    }
    case 3:{
      boundaryGap=["20%","20%"];
      break;
    }
    case 4:{
      boundaryGap=["10%","10%"];
      break;
    }
    default:{
      boundaryGap=["0%","0%"];
    }
  }

针对三种情况做不同比例的左右夹紧。

同时解决上诉两个问题。

结语

为了完美解决直方图,数据量较少时候,柱体溢出问题的探索。针对2、3、4个柱体单独处理,解决问题,但是问题原因未找到,不知道是不是echarts的bug,希望有大佬指教。如果有更好的解决办法,也欢迎留言,交流一波~

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据量过大时,优化 ECharts 的代码可以考虑以下几个方面: 1. 数据处理:对于大数据量,可以在前端进行数据处理,例如数据抽样、数据聚合等。这样可以减少要展示的数据点数量,提高性能。可以使用 lodash 等库来辅助处理数据。 2. 懒加载:对于大数据量的图表,可以采用懒加载的方式,即只在用户需要时才加载相应的数据。可以通过 ECharts 的异步加载功能,根据用户的交互来动态加载数据。 ```javascript myChart.showLoading(); // 异步加载数据 $.ajax({ url: 'your_data_url', success: function(data) { myChart.hideLoading(); // 使用加载的数据更新图表 myChart.setOption({ series: [{ data: data }] }); } }); ``` 3. 使用 Web Worker:将数据处理放在 Web Worker 中进行,以避免阻塞主线程。Web Worker 可以在后台进行耗时的数据处理操作,不会影响用户界面的响应。 ```javascript var worker = new Worker('data_worker.js'); worker.onmessage = function(event) { var processedData = event.data; // 使用处理后的数据更新图表 myChart.setOption({ series: [{ data: processedData }] }); }; // 向 Web Worker 发送数据 worker.postMessage(data); ``` 4. 使用 Canvas 渲染:对于大数据量的图表,可以考虑使用 Canvas 渲染,相比于 SVG 渲染,Canvas 渲染在处理大量数据时性能更好。通过设置 `renderer: 'canvas'` 来启用 Canvas 渲染。 ```javascript var myChart = echarts.init(document.getElementById('chart'), null, { renderer: 'canvas' }); ``` 5. 禁用动画效果:对于大数据量的图表,禁用动画效果可以加快渲染速度。可以通过设置 `animation: false` 来禁用动画效果。 ```javascript myChart.setOption({ animation: false }); ``` 以上是一些优化 ECharts 数据量过大的代码方法,根据具体情况可以选择适合的方法进行优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值