earchs柱形图怎样使某个柱子变色

在Echarts项目中,遇到使用itemStyle设置柱状图颜色的问题,原本想通过全局设置实现,但导致所有柱子变色。解决方案是,在data中针对每个值应用itemStyle,根据条件动态赋色,从而达到局部改变颜色的效果,成功实现了执行进度低于序时进度的柱子标红。

技术学了但是不学以致用的话,其实也是会遗忘的,这次项目中使用了earchs图表,然后又去翻开earchs官网去看文档,总结一下这次的错误思路吧!

earchs官网:https://echarts.apache.org

背景:从一组数组中,去取执行进度< 序时进度的数据,然后将它对应的柱子标红。
我的思路:看了earchs的文档,我首先使用了itemStyle(这里是没有毛病的)

 series: [
      {
        data: varietyEnforcementArr,
        type: 'bar',
        name: '执行进度',
        barMaxWidth: 40,
        itemStyle: {
           normal: {
             color: function(){
              for(let i=0;i<varietyEnforcementArr.length;i++){
                 if(varietyEnforcementArr[i]<chronologicalProgressArr[i]){
                   return '#c23531'
                 }
              }
             },
           },
         },
      },

      {
        data: chronologicalProgressArr,
        type: 'line',
        name: '序时进度',
      },
    ],

结果:整个柱形图的柱子全部变成了黑色。
原因:其实就是颜色不起作用,在这里的代码itemStyle是全局的。

当时还想了一些其他的方法
  • 就是在组件那里取好执行进度< 序时进度的值,再将这个值传过来,这样子的数据是可行的,但是放到series这里就会出现原本一列的变成两列,这是不符合需求的。(X)
  • 也百度了度娘,写了一种接近正确答案的方法,但是还差那么一点点转弯
data: [10,{
	itemStyle: {
      normal: {
          color:'#c23531',
        },
      },
 },20,30,40,50]

改进后的正确思路:

在data这里进行取值,将取到的value值再给它itemStyle赋予给它,从而进行局部的一个变化。

series: [
      {
        data: varietyEnforcementArr.map((value, index) => ({
          value,
          itemStyle: {
            normal: {
              color: value < chronologicalProgressArr[index] ? '#c23531' : '#2ec7c9',
            },
          },
        })),
        type: 'bar',
        name: '执行进度',
        barMaxWidth: 40,
      },
      {
        data: chronologicalProgressArr,
        type: 'line',
        name: '序时进度',
      },
    ],

结果:是可行的,相应的柱子也变成了红色。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序媛夏天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值