所以我有一个高图,我想在每个堆栈的第一个点(即0点所在的位置)显示数据标签
我的配置如下:
{
chart: {type: 'bar'},
plotOptions: {
series: {
stacking: 'percent',
dataLabels: {
enabled: true,
allowOverlap: true,
formatter: function () {
if (pointIsFirstInStack(this)) {
return labelFunction(this);
}
return '';
}
}
}
},
series: [{
name: 'Available',
data: [
{x: 'Event1', y: 18},
{x: 'Event2', y: 20}
]
}, {
name: 'Purchased',
data: [
{x: 'Event1', y: 23},
{x: 'Event2', y: 40}
]
}]
}
但是我很难实现pointIsFirstInStack
功能,任何想法?
的问候,
埃纳尔
JSFiddle来说明我的图表:http://jsfiddle.net/qam37suh/
编辑:添加系列并堆叠到配置示例 edit2:添加了JSFiddle
答案 0 :(得分:1)
您可以查看系列索引。
如果你总是要有两个系列,你可以这样检查:
formatter: function(){
return this.series.index == 1 ? this.x : null;
}
示例:
Highcharts默认情况下将系列反向堆叠,因此索引0堆叠在顶部。
如果你想要一个动态数量的系列,你可以先添加一系列的系列检查,这样你仍然可以检查最后一个系列:
formatter: function(){
var len = this.series.chart.series.length -1;
return this.series.index == len ? this.x : null;
}
示例:
(您也可以在reversedStacks: false
上设置yAxis
,而只需检查index == 0
示例:
)
或者,如果你的目标是将类别放在系列中而不是外部,你可以移动它们:
xAxis: {
categories: ['Event1', 'Event2'],
labels: {
x: 60,
style: {
fontWeight: 'bold',
color: 'rgba(255,255,255,0.75)'
}
}
}
示例: