[英]Highstock, True way of Get count of shown points after setExtreme (Zooming) - WITHOUT counting all data with MIN and MAX
当然,有一种方法可以对缩放或任何变化的视图后显示的所有点进行计数,并对此做出反应。
我的目标是在Highchart 7.2.0 stockChart中 , 如果 “ 视点 ” x “圆半径”大于(>) “视口像素” ,我只是将其隐藏起来,或者对点做一些特殊的处理,因为它们是特殊的,仍应显示。
所以我需要:
(我只是觉得如果它没有真正的办法,最好是我算SVG的对象,而不是: 计数我所有的数据,并使用isInside与最小值和最大值 )
events: {
afterSetExtremes: function(event) {
console.log(event.min);
console.log(event.max);
}
}
if (chart.userOptions.plotOptions.line.marker.enabled) {
chart.userOptions.plotOptions.line.marker.enabled=false;
chart.update({
plotOptions: {
marker: {
enabled:false
}
}
});
}
解决了这个问题:
plotOptions: {
series: {
marker: {
enabled:undefined,
enabledThreshold: 4,
symbol: 'circle',
radius: 4,
},
}
}
就像这样:
标记:{enabled: true ,enabledThreshold:0,(默认)
应该 :
标记:{enabled: undefined ,enabledThreshold: 4 ,(大于零)
从这里获得帮助: https : //stackoverflow.com/a/54417034/7514010
最简单的方法是遍历数据并检查isInside
点属性或点位置。 或者,您可以覆盖translate
方法并计算现有循环中的可见点数:
var counter;
(function(H) {
H.Series.prototype.translate = function() {
...
counter = 0;
// Translate each point
for (i = 0; i < dataLength; i++) {
...
point.isInside =
plotY !== undefined &&
plotY >= 0 &&
plotY <= yAxis.len && // #3519
plotX >= 0 &&
plotX <= xAxis.len;
// CHANGE
if (point.isInside) {
counter++;
}
// CHANGE
...
}
series.closestPointRangePx = closestPointRangePx;
H.fireEvent(this, 'afterTranslate');
}
})(Highcharts)
它由@ppotaczek 在这里通过链接jsfiddle.net/BlackLabel/j1tLfaxu在第三条评论中以及在GitHub问题中得到了答复 : https : //github.com/highcharts/highcharts/issues/12017
如果需要获取现在正在查看的点数(通过使用afterSetExtremes或重绘或渲染事件):
chart: {
events: {
render: function() {
console.log(this.series[0].points.length)
}
}
},
this.series[0].points[0].isInsdie.
因为有可能 没有显示第一个点或最后一个点,而只是影响了折线图或其他类型的图表中的线,所以也没有显示出来。
为了进行极端计算,您可能需要:
this.series[0].cropStart
并将其与您的主要数据进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.