答案 0 :(得分:3)
使用多个yAxis并使用startAngle将它们分配给分隔的窗格。
<强>分析器强>
var colors = Highcharts.getOptions().colors,
each = Highcharts.each,
series = [{
yAxis: 0,
data: [10, 20, 30]
}, {
yAxis: 1,
data: [1, 2, 3]
}, {
yAxis: 2,
data: [4, 2, 1]
}, {
yAxis: 3,
data: [5, 1, 3]
}, {
yAxis: 4,
data: [2, 3, 4]
}],
yAxis = [],
panes = [],
startAngle = 0;
each(series, function(serie, i) {
yAxis.push({
pane: i,
showLastLabel: true,
gridLineWidth: i === 0 ? true : false,
labels: {
useHTML: true,
formatter: function() {
return '<span style="color:' + colors[i] + '">' + this.value + '</span>';
}
}
});
panes.push({
startAngle: startAngle
});
startAngle += 72;
});
图表配置
$('#container').highcharts({
/*
chart options
*/
pane: panes,
yAxis: yAxis,
series: series
});
示例:强>
答案 1 :(得分:0)
我相信 Sebastian Bochan的答案坚如磐石,因为他提出了pane
属性。但是,我正在修补另一种方法,并希望与您和社区分享。
我的解决方案使用“虚拟”系列,这是系列,用户看不到或与之交互,但可以帮助您自定义功能,如标签。
我添加了六个“虚拟”系列,其中包含蜘蛛图表每个轮辐的标签。对于“零”值,第一个是空白,但其他值将显示沿辐条的第一个,第二个,第三个等点的数据标签。
绘制图表后,我使用addSeries()
函数将这些“虚拟”系列添加到图表中:
// Add "dummy series to control the custom labels.
// We will add one for each spoke, but first will always be
// overriden by y-axis labels; I could not figure out how to
// disable that behavior.
// The color, showInLegend, and enableMouseTracking attributes
// prevent the user from seeing or interacting with the series
// as they are only used for the custom labels.
var chart = $('#container').highcharts();
var labelArray = [
['','1','2','3','4','5'],
['','j','k','l','m','n'],
['','one','two','three','four','five'],
['','u','v','w','x','y'],
['','a','b','c','d','e']
];
for (var i = 0; i<=5; i++) {
chart.addSeries({
name: 'dummy series #' + i + ' for label placement',
data: [
{ name: labelArray[0][i], y: i },
{ name: labelArray[1][i], y: i },
{ name: labelArray[2][i], y: i },
{ name: labelArray[3][i], y: i },
{ name: labelArray[4][i], y: i }
],
dataLabels: {
enabled: true, padding: 0, y: 0,
formatter: function() {
return '<span style="font-weight: normal;">' + this.point.name + '</span>';
}
},
pointPlacement: 'on',
lineWidth: 0,
color: 'transparent',
showInLegend: false,
enableMouseTracking: false
});
}
需要注意的几个项目:
lineWidth: 0
和color: 'transparent'
使“虚拟”系列线不可见showInLegend: false
阻止他们出现在图例enableMouseTracking: false
阻止用户与他们互动以下是显示其工作原理的小提琴:http://jsfiddle.net/brightmatrix/944d2p6q/
结果如下:
我在评论中注意到的怪癖:我无法弄清楚如何覆盖第一个轮辐上的标签(在12点钟位置)。如果我将y轴标签设置为“false”,它拒绝显示任何内容,甚至是我在“虚拟”系列中设置的自定义数据标签。因此,我建议你的第一个说话是你的例子中的数字标签。
我意识到这可能是一条更复杂的路线,但我希望它对你和其他人有所帮助。