Highcharts获得系列数据缩放索引

时间:2015-01-29 05:57:59

标签: highcharts

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

我收到了original question的有用答案,其中包含以下jsFiddle您可以参考的信息。它的目的是在当前视图中分配高/低标记。但是,如果该点超出范围,dataMax / dataMin并不总是正确的。

我可以更正比较yExt.dataMax例如yExt.max的问题,如果dataMax更大则使用后者,这会将标记放在图的上边缘。我还可以阻止 yAxis 缩放/缩放,只需处理 xAxis 的逻辑。

然而,jsFiddle方法正在迭代整个系列的数据集。有没有办法在缩放图中获取第一个 activePoint 的索引?无需使用条件语句迭代整个数据集。也许有一个内部或无证变量存储我之后的索引值?或者,不是开始/结束索引,缩放视图中的点的提取/隔离数组也可以工作。

1 个答案:

答案 0 :(得分:2)

chart.series[0].points原来是我追求的。使用jsFiddle示例,它使用 HighCharts ,其中points数组将与data相同。当系列cropThreshold的总积分超过points的值时,data会将cropThreshold数组裁剪为缩放/绘图范围内的数组。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()对象的最小值/最大值进行比较,还可以检查点是否在边界内。排除出界点将需要忽略dataMin / dataMax属性并迭代通过points数组比较/存储最高/最低y值。

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