highcharts中的条件标记颜色

Posted

技术标签:

【中文标题】highcharts中的条件标记颜色【英文标题】:conditional marker colors in highcharts 【发布时间】:2012-10-15 14:00:01 【问题描述】:

我正在使用 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,
  
 
,

【问题讨论】:

【参考方案1】:

我正在做类似的事情,我想我会用 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',
          
        )

【讨论】:

【参考方案2】:

扩展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;
           
        
    

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

试试:

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

等等

【讨论】:

只有一个问题。我有数组 p 而不是常规变量 a(参见演示 - jsfiddle.net/jFmSD)。我想检查 p[something] 是否等于 1。我写 p[this.x] 但它不起作用。任何想法如何解决这个问题? this.x 指的是什么?如果 p 是一个数组,你应该引用,例如第一个元素,像这样:p[0] this.x 从 0 到 n,它是 x 轴的数字。所以它应该像 p[0]、p[1] 等等。但事实并非如此。 取而代之的是,是否可以在该函数 function(check) 中进行循环,它将检查 p[i] 并且 i 将从 m 变为 n? 感谢您的提示。我找到了另一个解决方案,它也有效。我创建了一个数组(带循环),如 var r = ["y":5,"marker":"fillColor":"grey","y":8,"marker":"fillColor" :"red","y":9,"marker":"fillColor":"red"];并用不同的颜色填充标记。【参考方案5】:

您还使用区域:

$(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

【讨论】:

以上是关于highcharts中的条件标记颜色的主要内容,如果未能解决你的问题,请参考以下文章

点击量。

画图工具除了echarts我使用highcharts

为highcharts中的每一列设置不同的颜色

Highcharts:条形重叠的颜色

如何根据 y 位置动态更改标记点的颜色

Highcharts动态突出显示一列