【问题标题】:Chart.js: Can I change the "OriginalOptions" variable within the chartjs-zoom-plugin?Chart.js:我可以更改 chartjs-zoom-plugin 中的“OriginalOptions”变量吗?
【发布时间】:2021-03-01 14:56:24
【问题描述】:
我有一个图表,每分钟更新一个新数据点。这个图表也使用了chartjs-zoom-plugin来让用户放大。我的网页上有一个按钮调用了chart.resetZoom()函数让用户快速地一直放大,但它只是放大超出图形的原始范围。例如,图表以 100 个数据点开始,一旦更新到 101 个数据点并且用户单击按钮,图表将重置以显示 0-100 而不是 0-101 的数据点。
查看 chartjs-zoom-plugin 源代码,它看起来像在用户启动他们的第一次缩放/平移时调用了“storeOriginalOptions()”函数,并为“resetZoom( )”函数来引用它应该缩小到的位置。当我添加新数据点时有没有办法更新它,所以 resetZoom() 会一直缩小以包含新数据点?
【问题讨论】:
标签:
javascript
charts
chart.js
chartjs-plugin-zoom
【解决方案1】:
是的,我可以从 chartjs-plugin-zoom 0.7.7 开始确认这一点,其中包含有关未记录功能的所有警告。有discussion here 和在Eliz's fiddle 中覆盖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],
};