Javascript Highcharts:显示峰值
我想在我的Highcharts图表上显示两点之间的差异。只有当它是一个主要的“峰值”差异时 下面是一个“静态”示例:Javascript Highcharts:显示峰值,javascript,json,highcharts,Javascript,Json,Highcharts,我想在我的Highcharts图表上显示两点之间的差异。只有当它是一个主要的“峰值”差异时 下面是一个“静态”示例: $(function () { $('#container').highcharts({ chart: { type: 'areaspline' }, series: [{ data: [560,500,476,453,356,{
$(function () {
$('#container').highcharts({
chart: {
type: 'areaspline'
},
series: [{
data: [560,500,476,453,356,{
y: 590,
dataLabels: {
enabled: true,
formatter: function () {return '+243';}
}
},497,478,465,465,465,410,398]
}]
});
});
如何将所有点值与上一个点值进行比较
例如,类似的东西(不是“真正的代码”)
我们的目标是创建一个干净的json文件,其中只包含javascript计算的值和峰值
有可能吗?您可以使用
plotOptions.series.dataLabels.formatter
进行比较。要进行比较,您将使用this.x
、this.y
和this.series
查找上一点
例如,formatter
函数是():
其中,
PEAKDIFF
是在显示标签之前希望差值达到的值。如果您希望同时显示较大的负数下降,您也可以使用Math.abs
感谢Ondkloss,我将尝试并发布结果。此答案假设之前的x
值为x-1
,这不一定是正确的例如,查找索引更安全,如this.series.data.indexOf(this.point)-1
。对于非常大的系列,连续查找点将是性能杀手,因此可能最好将索引缓存在point对象本身中。
if(prevValue > 200) {
displayDataLabel();
}
function displayDataLabel() {
peak = this.datalabel - prev.datalabel;
return peak;
}
formatter: function() {
if(this.x > 0 && this.y - this.series.data[this.x-1].y >= PEAKDIFF) {
return "+" + (this.y - this.series.data[this.x-1].y);
}
return null;
}