高图中的条件标记颜色

时间:2012-10-25 11:34:01

标签: javascript highcharts markers

我正在使用Highcharts,我想用不同的颜色填充折线图中的标记。例如:当变量“a”为1时,用红色填充标记,否则用绿色填充。有可能吗?

以下是代码:http://jsfiddle.net/EnyCJ/1/

我试图用格式化程序做到这一点,但它不起作用。有什么建议吗?

var a=1;

plotOptions: {
 series: {
  marker: {
   fillColor: {
    formatter: function () {
      if (a == 1) {
       return 'red'
      } else {
       return 'green'
      }
    }
   },
  lineWidth: 2,
  }
 }
},

5 个答案:

答案 0 :(得分:7)

尝试:

fillColor: a==1 ? "#ff0000" : "#00ff00"

答案 1 :(得分:4)

您还可以使用区域:

$(function () {
    $('#container').highcharts({
        series: [{
            data: [-10, -5, 0, 5, 10, 15, 10, 10, 5, 0, -5],
            zones: [
              {
                value: 0,
                color: '#f7a35c'
              }, 
              {
                color: '#90ed7d'
              }
            ]
        }]
    });
});

Try it in jsfiddle.net

答案 2 :(得分:1)

如何从图表中删除逻辑并仅将其用于显示数据?

var a = 1,
    color = a ? 'red' : 'green';

plotOptions: {
     series: {
         marker: {
             fillColor: color,
             lineWidth: 2,
         }
     }
}

答案 3 :(得分:0)

扩展Asad Saeeduddin's answer

我在圆环饼图中使用dataLabels,并且建议的解决方案非常特定于单一情况。我想根据条件逻辑更改单个饼图切片的标签文本颜色,比较值。

只是分享因为我的搜索把我带到了这里。

data: outerData,
dataLabels: {
    formatter:
        function () {
            if ((outerData[this.point.x].y > innerData[this.point.x].y) && (this.point.x != 0)) {
                return this.y > 0.1 ? '<span style="fill: red;">' + this.point.name + ': ' + this.y + '% ' + '</span>' : null;
            } else {
                return this.y > 0.1 ? '<span style="fill: #006400;">' + this.point.name + ': ' + this.y + '% ' + '</span>' : null;
           }
        }
    }

答案 4 :(得分:0)

我正在做这样的事情,我想我会用 2021 年的回复更新这篇文章。事实证明,在 Highcharts 中,您必须将数组输入数据,但它可以是具有与该点相关联的参数的对象数组。我试图使点填充与 y 轴的比例不同,如下所示:

tempScale(value: any) {
      if(value > 32) {
        return 'red'
      }
      else if(value > 31) {
        return 'orange'
      }
      else if(value > 30) {
        return 'yellow'
      }
      else if(value > 28) {
        return 'green'
      }
      else if(value > 27) {
        return 'blue'
      }
      else {
        return '#99ffff'
      }
  }

我最终找到了这个 codepen,其中显示了一个示例,说明如何输入对象数组并使用键 y、颜色、标记和半径为数组中的每个项目提供属性。

   {
      y: 9,
      color: 'green',
      marker: {
        radius: 10
      }
    }

在将它们推入数组之前,我最终组合了 2 并计算了它们的颜色,这对我的目的非常有用。

array.push({
          y: item.attributes.Sal, 
          color: this.tempScale(item.attributes.Temp), 
          marker: {
            lineWidth: 1,
            lineColor: 'black',
          }
        })