我想根据部分填充为栏的各个部分添加不同的颜色。
当部分填充为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
}
}]
});
答案 0 :(得分: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()
答案 1 :(得分:0)
是的,您可以通过检查填充的条形来设置图表加载后的填充颜色。
首先,将图表选项设置为变量,以便稍后使用它们
var thisChart = Highcharts.chart('container', { /* your options here */ });
接下来,在图表加载之后,检查填充是否低于或高于50(在这种情况下,填充为0.5以匹配您在partialFill
中设置的值),然后使用series.update()
函数(https://api.highcharts.com/class-reference/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/
我希望这些信息对您有所帮助。