echarts折线图分段用不同颜色显示

之前在用echarts做折线图的时候,需要一条线段根据某个条件用两种颜色显示。在网上找到的解决方案都是series.data用两组数据模拟,由于我的数据是动态加载的,所以这种方法并不怎么可取,因此我就去官方文档找看有没有相关的配置项(先百度再找官方文档实在不是什么好的习惯,尤其是官方文档还是中文的),果然,在官网上看到一个这样的实例:点击查看,发现是visualMap的作用,当然官网上的这个效果也是通过静态的配置实现的,但是我们可以动态的配置参数呀~

特意记录一个小例子在这里,方便以后用到的时候查询。

要求:当数据连续是300的时候,显示红色,其余显示绿色。

实现:这个例子完全是根据官网的例子修改而来,这里只贴出修改的部分。

visualMap部分修改为:
visualMap: {
    show: false,
    dimension: 0,
    pieces: [],  //pieces的值由动态数据决定
    outOfRange: {
        color: 'green'
    }
}

在chart.setOption(option)前新增:
var data = [300, 280, 250, 260, 270, 300, 300, 300,          400, 390, 300, 300, 300, 500, 600, 750, 800, 700, 600, 400];  //模拟动态数据
var j = 0; 
option.series[0].data = data; 
//连续为300时,颜色变为红色
for(let i = 0; i < data.length; i++) {
    if(data[i] === 300 && data[i + 1] === 300) {
        option.visualMap.pieces[j] =  {gte:i,lte:i+1,color:'red'}; 
        j++; 
    }
}

最后的效果如下:

结果

当然,有时候我们还有这样的需求:将数据在500以上时将其改为红色显示,这时需要将代码修改为:

visualMap部分修改为:
visualMap: {
    show: false,
    dimension: 1,
    pieces: [],  //pieces的值由动态数据决定
    outOfRange: {
        color: 'green'
    }
}

在chart.setOption(option)前新增:
var data = [300, 280, 250, 260, 270, 300, 300, 300, 400, 390, 300, 300, 300, 500, 600, 750, 800, 700, 600, 400];  //模拟动态数据
var j = 0; 
var max = Math.max.apply(Math, data); //数据的最大值
option.series[0].data = data; 
option.visualMap.pieces[0] = {gte: 500, lte: max, color: 'red'}; 

最后的效果如下:

结果

在这个需求中必须设置最大值(即lte),因为dimension:1表示pieces区间根据series.data中的数据决定,但是因为折线图是分段型的,并非连续型的,如果不设置最大值,则只会在点上显示颜色,如下:

错误示范

问题解决了N久才拖拖拉拉做了一个记录,吸取教训:早做记录、先查文档!

作为一只小白,如果本文有什么错误,欢迎各位前辈指正,希望各位不吝赐教!如果还有像我一样的小白,如果里面有些参数不太理解,可以去查看官方文档,地址如下:echarts-visualMap

  • 9
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值