0

我有一个图表,每分钟更新一个新数据点。这个图表也使用了chartjs-zoom-plugin来让用户放大。我的网页上有一个按钮调用了chart.resetZoom()函数,让用户可以快速一直放大,但它只是放大超出图形的原始范围。例如,图表以 100 个数据点开始,一旦更新到 101 个数据点并且用户单击按钮,图表将重置以显示 0-100 而不是 0-101 的数据点。

查看 chartjs-zoom-plugin 源代码,它看起来像在用户启动他们的第一次缩放/平移时调用了“storeOriginalOptions()”函数,并为“resetZoom()”函数存储了原始最小/最大数据点参考它应该缩小到的位置。当我添加新数据点时,有没有办法更新它,所以 resetZoom() 会一直缩小以包含新数据点?

4

1 回答 1

0

的,我可以从 chartjs-plugin-zoom 0.7.7 开始确认这一点,其中包含有关未记录功能的所有警告。这里有讨论,storeOriginalOptions(chart)还有一个在Eliz's fiddle中覆盖的实际示例,关键部分是:

var originalOptions = chart.$zoom._originalOptions;
helpers.each(chart.scales, function(scale) {
    if (!originalOptions[scale.id]) {
        originalOptions[scale.id] = helpers.clone(scale.options);
    }
});

因此,如果需要,您可以直接在 $zoom 上编辑属性。如果您知道分配给您的比例尺的 ID,并且只想重置到当前设置的轴范围,那么您可以进一步缩短比例尺的复制到_originalOptions

chart.$zoom._originalOptions = {
    myXID: chart.options.scales.xAxes[0],
    myYID: chart.options.scales.yAxes[0],
};
于 2021-08-15T06:20:35.870 回答