Javascript Highstock,setExtreme(缩放)后显示点计数的真实方式-不使用MIN和MAX计算所有数据
当然,有一种方法可以计算缩放或任何更改视图后显示的所有点,并对此进行反应 我的目标是在Highchart 7.2.0股票图表中,如果“观察点”x“圆半径”,超过了(>)“观察端口像素”,我只是隐藏它们,或者对点做一些特殊的处理,因为其中一些是特殊的,仍然应该显示 因此,我需要:Javascript Highstock,setExtreme(缩放)后显示点计数的真实方式-不使用MIN和MAX计算所有数据,javascript,highcharts,stock,Javascript,Highcharts,Stock,当然,有一种方法可以计算缩放或任何更改视图后显示的所有点,并对此进行反应 我的目标是在Highchart 7.2.0股票图表中,如果“观察点”x“圆半径”,超过了(>)“观察端口像素”,我只是隐藏它们,或者对点做一些特殊的处理,因为其中一些是特殊的,仍然应该显示 因此,我需要: 如何获取:现在刚刚查看的点数(不在所有数据中添加“FOR”) (我只是认为,如果没有真正的方法,我最好统计svg对象,而不是:统计所有数据,并使用isInside和min和max) 最好的活动是:“Afteretextr
plotOptions: {
series: {
marker: {
enabled:undefined,
enabledThreshold: 4,
symbol: 'circle',
radius: 4,
},
}
}
就是这样,
标记:{已启用:true,
enabledThreshold:0(默认情况下)
应该是:
标记:{已启用:未定义,
启用阈值:4,(大于零)
从这里获得帮助:最简单的方法是循环数据并检查
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)
var计数器;
(职能(H){
H.Series.prototype.translate=函数(){
...
计数器=0;
//翻译每一点
对于(i=0;i=0&&
plotY=0&&
plotX在该链接的第三条评论以及GitHub问题中,@ppotaczek对此作出了回答:
如果需要获取刚刚查看的点数(通过使用afterSetExtremes或重画或渲染事件):
- 处理扩展数据也可以用来代替点
- 点对象有足够的选项,如isInside:
因为它是可能的第一个或最后一个点不会显示,只会影响折线图中的线条或其他类型的图表中的线条,因为也会放大Y
对于极限开始时的计算,您可能需要:
this.series[0].cropStart
并将其与您的主要数据进行比较。谢谢,但这正是我想要避免的,因为我认为应该有更好的方法。例如:Extreme之后,我们得到一个事件或这个的孩子,我们可以很容易地得到它。translate
方法是在后台调用的。该解决方案只计算迭代次数-您不必创建额外的循环。我目前看不到更有效的解决方案。更正-对于需要排序数据的序列类型,您可以检查series.processedXData
:谢谢@ppotaczek,真正的方法几乎就是这样。但是,如果您允许,我会完全回答我的问题。
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)
chart: {
events: {
render: function() {
console.log(this.series[0].points.length)
}
}
},
this.series[0].points[0].isInsdie.
this.series[0].cropStart