1

我想根据部分填充为栏的部分添加不同的颜色。

在部分填充为 0.5 (50%) 的那一刻,它使一半的条形变为深绿色。有没有办法根据百分比在条形图中定义颜色?

例如 0-49 使部分填充为红色,其余为白色。50-100 使部分填充为绿色,其余为白色等。

https://jsfiddle.net/sg0co5au/11/

Highcharts.chart('container', {
    chart: {
        type: 'xrange'
    },
    title: {
        text: 'Highcharts X-range'
    },
    xAxis: {
        type: 'datetime'
    },
    yAxis: {
        title: {
            text: ''
        },
        categories: ['Prototyping', 'Development', 'Testing'],
        reversed: true
    },
    series: [{
        name: 'Project 1',
        // pointPadding: 0,
        // groupPadding: 0,
        borderColor: 'gray',
        pointWidth: 20,
        colour:'#FF0000',
        data: [{
            x: Date.UTC(2014, 10, 21),
            x2: Date.UTC(2014, 11, 2),
            y: 0,
            partialFill: 0.50,
            color:'#469E5A'
        }, 
        ],
        dataLabels: {
            enabled: true
        }
    }]

});
4

2 回答 2

0

是的,您可以在图表加载后通过检查条形的填充量来设置填充的颜色。

首先,将图表选项设置为一个变量,以便您以后可以参考它们

var thisChart = Highcharts.chart('container', { /* your options here */ });

接下来,在图表加载后,检查填充是否低于或高于 50(在这种情况下,0.5 与您设置的值匹配partialFill),并使用series.update()函数(https://api.highcharts.com/class-参考/Highcharts.Series#update)来改变颜色:

if (thisChart.series[0].data[0].partialFill < 0.5) {
  thisChart.series[0].update({
    partialFill: {
      fill: 'red'
    }
  });
} else {
  thisChart.series[0].update({
    partialFill: {
      fill: '#469E5A'
    }
  });
}

我对你的代码做了一些小的改动。首先,我明确地将系列fill颜色设置为您选择的绿色。然后,我将数据的颜色设置为白色。这样做是将部分填充的颜色设置为系列的颜色,将其他空间设置为白色。然后,在partialFill绘制图表后查看值时,如果该值低于 0.5,则填充的值将变为红色。

  series: [{
    name: 'Project 1',
    borderColor: 'gray',
    pointWidth: 20,
    partialFill: {
      fill:'#469E5A' /* default color of the filled part of the bar */
    },
    data: [{
      x: Date.UTC(2014, 10, 21),
      x2: Date.UTC(2014, 11, 2),
      y: 0,
      partialFill: 0.50,
      color: 'white' /* color of the unfilled part of the bar */
    }],
    dataLabels: {
      enabled: true
    }
  }]

在此处查看您的小提琴的更新版本:https ://jsfiddle.net/brightmatrix/sg0co5au/46/

我希望这些信息对您有所帮助。

于 2018-07-23T12:34:48.667 回答
0

我看到背景矩形是"highcharts-point highcharts-color-0 highcharts-partfill-original"具有填充值的类#469E5A。将其更改为"white"您定义其 CSS 的位置。

上面的叠加层是 <rect x="6.5" y="85.5" width="696" height="20" rx="3" ry="3" class="highcharts-partfill-overlay" clip-path="url(#highcharts-51rfx2r-4)" stroke="gray" stroke-width="1" fill="rgb(0,82,14)"></rect>

对于按百分比显示的颜色,请使用变量来存储百分比,例如percent

if(percent<=49){
    document.getElementsByClassName("highcharts-partfill-overlay").setAttribute("fill", "red")
}
else if(percent>49){
    document.getElementsByClassName("highcharts-partfill-overlay").setAttribute("fill", "green")
}

您可以使用类似的方式更改背景框的颜色document.getElementsbyClassName()

于 2018-07-22T22:20:52.483 回答