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.dataMax
与 yExt.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 值不再正确,或者我可以使用标志而不是分散并将其标题设置为实际值。
在查看系列折线图的缩放选择时,我可以查询视图中有多少点 chart.series[0].activePointCount
(API 文档中似乎没有?)。活动点不一定在缩放视图中,left/right 边界可能有一个点超出活动计数,我注意到视图边界之间的点可以超出 top/bottom界限。
我的 original question with the following jsFiddle 收到了一个有用的答案,您可以参考。它的目的是在当前视图中分配 high/low 标记。但是,如果点超出范围,dataMax
/dataMin
并不总是正确的。
我可以更正此问题,例如将 yExt.dataMax
与 yExt.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 值不再正确,或者我可以使用标志而不是分散并将其标题设置为实际值。