查看系列折线图的缩放选择时,我可以查询视图中有多少个点chart.series[0].activePointCount
(似乎不在API文档中?)。活动点不一定在缩放视图中,左/右边界可能在活动计数之外有一个超出它们的点,我注意到视图边界之间的点可以超出顶部/底部边界。
我收到了original question的有用答案,其中包含以下jsFiddle您可以参考的信息。它的目的是在当前视图中分配高/低标记。但是,如果该点超出范围,dataMax
/ dataMin
并不总是正确的。
我可以更正比较yExt.dataMax
例如yExt.max
的问题,如果dataMax
更大则使用后者,这会将标记放在图的上边缘。我还可以阻止 yAxis 缩放/缩放,只需处理 xAxis 的逻辑。
然而,jsFiddle方法正在迭代整个系列的数据集。有没有办法在缩放图中获取第一个 activePoint 的索引?无需使用条件语句迭代整个数据集。也许有一个内部或无证变量存储我之后的索引值?或者,不是开始/结束索引,缩放视图中的点的提取/隔离数组也可以工作。
答案 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值不再正确,或者我可以使用标志而不是散射并将其标题设置为实际值。