我有一个图表,每分钟更新一个新的数据点。这个图表还使用了chartjs-zoom-plugin来允许用户放大。我的网页上有一个按钮,调用chart.resetZoom()函数,允许用户快速缩放所有的方式,但它只缩放到图形的原始范围。例如,图形开始时有100个数据点,一旦它更新到101个数据点,并且用户单击按钮,图形将重置为显示从0-100而不是0-101的数据点。
查看chartjs-zoom-plugin源代码,它看起来像一个"storeOriginalOptions()"函数在用户初始化第一次缩放/平移时被调用,并为resetZoom()保存原始的最小/最大数据点。函数来引用它应该缩小到的位置。当我添加新的数据点时,是否有一种方法可以更新这一点,因此resetZoom()会一直缩小以包括新的数据点?
是,我可以确认这是在chartjs-plugin-zoom 0.7.7,所有关于未记录的功能的警告。这里有一个讨论和一个在Eliz的小提琴中重写storeOriginalOptions(chart)
的实际示例,关键部分是:
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],
};