我编写了一个用于在 yAxis 中平移的小代码,但它有点慢。如果我增加 tickInterval 的值,它会变得更快。但缺点是随着tickInterval的增加,当我拖动鼠标小于tickInterval大小时,代码开始奇怪地工作(尝试在我的小提琴中将tickInterval更改为500,然后将鼠标拖动一分钟。
我的jsfiddle链接。
相关代码:
var mouseY;
$(chart.container)
.mousedown(function(event) {
mouseY=event.offsetY;
yData=chart.yAxis[0].getExtremes();
yDataRange=yData.max-yData.min;
isDragging=true;
})
.mousemove(function(e) {
var wasDragging = isDragging;
if (wasDragging) {
yVar=mouseY-e.pageY;
if(yVar!=0) {
yVarDelta=yVar/500*yDataRange;
chart.yAxis[0].setExtremes((yData.min-yVarDelta),(yData.max-yVarDelta));
}
}
})
.mouseup(function (e) {
isDragging = false;
});
如果有人可以提供将像素(e.pageY)转换为 y 坐标的替代路线,也将不胜感激。正如您在代码中看到的那样,目前我正在做一个解决方法。
编辑我在这个jsfiddle 中包含了 translate 函数,并设置了这样的逻辑,使得平移只发生在 mouseup 而不是 mousemove。我目前面临的问题是,如果拖动小于刻度间隔,代码不仅会平移,还会缩放。我推测它的发生是因为 yAxis 最小值和最大值的变化发生在最小值的下限和最大值的上限处。