我正在尝试更改极坐标图的每个段的背景颜色。为背景设置单一颜色很容易,但是可以为每个极地饼设置不同的颜色吗?
下面的图表段有一个例子是8种不同的颜色:
http://www.highcharts.com/demo/polar
谢谢
据我所知,在API中没有简单的方法可以做到这一点。
我将提出一个解决方案,利用chart.renderer
为极坐标图的每个切片绘制一种颜色:
var colors = [ "pink", "yellow", "blue", "red", "green", "cyan", "teal", "indigo" ];
var parts = 8;
for(var i = 0; i < parts; i++) {
chart.renderer.arc(chart.plotLeft + chart.yAxis[0].center[0],
chart.plotTop + chart.yAxis[0].center[1],
chart.yAxis[0].height,
0,
-Math.PI + (Math.PI/(parts/2) * i),
-Math.PI + (Math.PI/(parts/2) * (i+1))).attr({
fill: colors[i % colors.length],
'stroke-width': 1,
'opacity': 1
}).add();
}
点击this JSFiddle link观看现场演示。
它使用renderer.arc
用chart
关于中心和轴高度的信息绘制每个切片。使用以弧度给出的起始和结束角度绘制弧。可以使用colors
数组对各种切片进行着色,并且可以使用parts
变量控制切片的数量。
如果有多个部分而不是颜色,它将从colors
数组的开头开始,当颜色用尽时,使用colors[i % colors.length]
。
您可以添加具有不同颜色点的假列系列,并将yAxis.maxPadding设置为0:
chart: {
polar: true,
events: {
load: function() {
var chart = this,
max = chart.yAxis[0].max;
chart.addSeries({
type: 'column',
data: [{
y: max,
color: 'rgba(255, 255, 0, 0.2)'
}, {
y: max,
color: 'rgba(255, 0, 255, 0.2)'
}, {
y: max,
color: 'rgba(0, 255, 255, 0.2)'
}, {
y: max,
color: 'rgba(255, 0, 0, 0.2)'
}, {
y: max,
color: 'rgba(0, 255, 0, 0.2)'
}, {
y: max,
color: 'rgba(0, 0, 255, 0.2)'
}, {
y: max,
color: 'rgba(130, 70, 150, 0.2)'
}, {
y: max,
color: 'rgba(0, 0, 0, 0.2)'
}],
pointPadding: 0,
groupPadding: 0,
zIndex: 0,
showInLegend: false,
enableMouseTracking: false,
animation: false
})
}
}
},
yAxis: {
maxPadding: 0
},
的jsfiddle:https://jsfiddle.net/BlackLabel/tsj9pomq
API参考:https://api.highcharts.com/highcharts/series.column https://api.highcharts.com/highcharts/yAxis.maxPadding