我的目标是在折线图的Y轴上有一个新选项,允许在常规Y数据系列之间切换(例如[1,2,3] )或原始数据系列的积累([1,3,6])。Highcharts包装过程线图上的数据不绘制正确的数据点
我开始通过包装processData
方法如下
(function (H) {
H.wrap(H.seriesTypes.line.prototype, 'processData', function(force) {
var yData = this.yData;
for (var i = 1; i < yData.length; i++) {
yData[i] = yData[i] + yData[i-1];
};
//alert(this.yData);
force.apply(this, Array.prototype.slice.call(arguments, 1));
});
} (Highcharts));
的this.yData
,我可以获得正确的数据,其余是非常简单的。当绘制时,我确实看到Y轴限制的变化与预期的一样,但数据点仍按照其原始值绘制(这里是小提琴:http://jsfiddle.net/oL3LfrLr/)
我怀疑这可能是一些范围问题,但我没有真的看到上面的错误。有小费吗?
为什么要包装processData
?
不确定是否诚实。我对JavaScript和HighCharts相当陌生,这是我的第一个扩展。我看了一下Waterfall Series这是做我想要的一部分,并从我的猜测来看,它可能是translate
或processData
方法。后者听起来最有前途,所以我开始在那里。
接受你的答案之前;你能解释一下在'translate'上使用'generatePoints'的原理吗? – ixje
只需尝试一下并比较差异即可)简而言之,调整浏览器窗口大小或在图例中隐藏/显示系列时调用'translate'。这意味着每次'yData'都会一次又一次地积累价值。当然,可以避免这个问题,但仅包装仅在更新系列数据(或重新计算数据)时才调用的generatePoints()会更简单。 –
谢谢,非常宝贵的意见。我无法从文档中找到这个,所以希望提取一些额外的知识:) – ixje