Highcharts 获取系列数据缩放索引

Highcharts get series data zoom indices

在查看系列折线图的缩放选择时,我可以查询视图中有多少点 chart.series[0].activePointCount(API 文档中似乎没有?)。活动点不一定在缩放视图中,left/right 边界可能有一个点超出活动计数,我注意到视图边界之间的点可以超出 top/bottom界限。

我的 original question with the following jsFiddle 收到了一个有用的答案,您可以参考。它的目的是在当前视图中分配 high/low 标记。但是,如果点超出范围,dataMax/dataMin 并不总是正确的。

我可以更正此问题,例如将 yExt.dataMaxyExt.max 进行比较,如果 dataMax 更大,则使用后者,这会将标记放置在图表的顶部边缘.我也可以阻止 yAxis zoom/scaling,只处理 xAxis.

的逻辑

然而,jsFiddle 方法正在遍历该系列的整个数据集。有没有办法获取缩放图中第一个 activePoint 的索引?无需使用条件语句迭代整个数据集。也许有一个内部或未记录的变量存储我之后的索引值?或者,代替 start/end 索引,缩放视图中的 extracted/isolated 点数组集也可以。

chart.series[0].points原来是我想要的。在 jsFiddle 示例中,它使用 HighCharts,其中 points 数组与 data 相同。当你的系列 data 的总点数超过 cropThreshold 的值时,cropThreshold 会将 points 数组裁剪为 zoom/plot 范围内的数组。cropThreshold默认为300,示例数据集为262点。将 cropThreshold 设置为 0 将确保 points 数组将始终被裁剪。

HighStock 添加了 dataGrouping 功能已启用,具有类似的效果,仅提供 points 数组中的兴趣点。如果您需要禁用该功能,您可以使用 cropThreshold 代替 HighCharts.

还值得注意的是,dataGrouping 功能修改了 data 数组,data 开始为空,但似乎将点插入到 data 数组中相对于它们的索引当您缩放或平移(可能是其他操作)时从数据集中获取。由于这种行为,您的 data 数组可以存储点,但不能从 0 的索引开始。 jsFiddle 示例使用 jQuery each() 从 0 到 length-1 遍历 data,由于初始索引大于 0

最好改为迭代 points 数组,这样可以提高性能,而不是遍历整个数据集。还可以通过与 x/y 轴 getExtremes() object 中的 min/max 值进行比较来检查一个点是否在边界内。排除越界点需要忽略 dataMin/dataMax 属性并遍历 points 数组 comparing/storing highest/lowest y 值。

如果不排除越界点,我还不知道如何进行。提供的分散方法可以将 y 值设置为 yAxis min/max 并禁用鼠标跟踪以防止工具提示,因为它的 y 值不再正确,或者我可以使用标志而不是分散并将其标题设置为实际值。