有人可以向我解释为什么这不起作用吗?我想在列的顶部同时显示值和百分比,但是,使用下面的返回 NaN 作为百分比值。
以下是返回的数据。
xAxis: { categories: ['a', 'b', 'c', 'd', 'e', 'f'] },
series: [{ data: [1, 4, 3, 7, 10, 1], name: 'Value' }]
.SetPlotOptions(new PlotOptions
{
Column = new PlotOptionsColumn
{
DataLabels = new PlotOptionsColumnDataLabels
{
Enabled = true,
Formatter = "function() { var dataSum = 0; for (var i = 0; i < this.series.data.length; i++) { dataSum += this.series.data[i] }; var pcnt = (this.y / dataSum) * 100; return '<b>Value</b>: ' + this.point.y + '<br/>' + '<b>Percent</b>: ' + pcnt + '%'; }"
}
}
})
问题出在代码的这一部分:
dataSum += this.series.data[i]
现在你正在尝试对点求和......但我很确定你想对点的 y 值求和:
dataSum += this.series.data[i].y
演示:http://jsfiddle.net/Ywr3L/41/
额外说明:
你会得到长数字,尝试在函数的返回中显示pcnt.toFixed(2)
而不是pcnt
。
我认为dataSum
仍然是0。
this.series.data.length
和this.series.data[i]
未定义。请改用this.series[0].data.length
和this.series[0].data[i]
。