我想以某种方式限制缩放,使其无法放大到某个值以上。例如,我的数据日期从几天/几个月到 15 分钟,所以我想显示的最小值(因此让用户只能缩放到这一步)就像显示这 15 分钟间隔的 4-5 个值。
我在另一个线程中找到了自动收报机的可能性,但这无济于事,因为它不会限制缩放的能力。是否有可以帮助我的内置方法或其他限制缩放因子的方法?
zoomCallback: function (minDate, maxDate, yRange) {
// Calculate the difference between the values
var difference = maxDate - minDate;
// If difference smaller than 3 hours
if ((difference / 1000 / 60 / 60) < 3) {
maxDate = new Date(minDate).setMinutes(180);
g.updateOptions({
dateWindow: [minDate, maxDate]
});
}
},
这就是我想出的,到目前为止它实际上工作正常。我将不得不稍微调整一下这些值,但它在很大程度上就像我想要的那样工作。该解决方案只有一个问题:当我放大时,它会自动更改值,并且您可以在很短的时间内看到旧值被渲染,然后更改为新值。这对用户体验来说并没有那么好,但它不是一个破坏者。是否有另一个更早触发的事件?
对此没有内置支持。但是你可以定义一个zoomCallback。这可以调用xAxisRange来确定新的缩放窗口是否可以接受。如果没有,你可以打电话updateOptions({dateWindow: ...})
给一些可接受的替代方案。
我在 dygraphs 网站上找到了一个名为 zoom 的测试用例,它将缩放限制在 mindate 和 maxdate 之间的范围内。这是链接 您可以从中建立一个最小范围,因此用户总是看到至少 4-5 个数据点。