前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【ECharts】数据量差距大

【ECharts】数据量差距大

作者头像
奋飛
发布2019-08-15 16:27:05
2.6K0
发布2019-08-15 16:27:05
举报
文章被收录于专栏:Super 前端Super 前端

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://ligang.blog.csdn.net/article/details/80455216

在echarts图表展示时,会遇到数据量差距过大的情况,出现这种情况后,过小的数据往往会影响交互(比如,点击事件等)

代码语言:javascript
复制
option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [1, 20000, 150, 80, 70, 110, 130],
        type: 'bar'
    }]
};
echarts-type-value
echarts-type-value

柱状图、折线图之类的可以使用log轴,修改type: 'log'可以解决问题;如果是饼图可以采用minAngle来防止某个值过小导致扇区太小影响交互。Issue#6767

echarts-type-log
echarts-type-log

仔细查看,会发现上图中Mon的数据为1,但是渲染出来的为0。究其原因,是因为log轴的问题~

log
log

通过数学图例可知,我们不能指定logBase为1。同时,x不能<=1;这里需要说明的是,echarts最新版本[v4.1.0]中,对于0&lt;x&lt;10&lt;x&lt;10<x<1做了处理,会按照原始值渲染;但是对于x=0(负无穷)x=0(负无穷)x=0(负无穷)或x=1(零)x=1(零)x=1(零)时,仍然会有问题!

关于存在数据为0的情况,Math.log(0)-Infinity,官方Issue中给出的建议是修改为一个很小的数字,比如0.01 Issue3161

综上所述,我们不能使用log轴处理,只能使用value轴,然后通过其他方式解决交互!!

series轴触发
series轴触发

上述数据为正常触发series获取的数据,为做对比使用

方式一:增加x坐标轴的触发事件

代码语言:javascript
复制
xAxis: {
	type: 'category',
	triggerEvent: true,
	data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},

问题:x轴获取的数据和触发item获取的数据对象不一致,如果需要下钻传递参数可能存在问题。Issue#3750

x坐标轴触发
x坐标轴触发

方式二:使用tooltip触发事件

代码语言:javascript
复制
tooltip: {
    // 默认为item
    trigger: 'axis',
    // 默认为 mousemove    
	triggerOn: 'click',
	axisPointer: {
    	type: 'shadow'
    },
	formatter: (params) => {
        // 这里调取相应的方法
		console.log(params[0])
	}
}

和触发series获取到的数据一致!! 问题:和原有的tooltip功能冲突,需要有一定的取舍。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方式一:增加x坐标轴的触发事件
  • 方式二:使用tooltip触发事件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档