我已经在我正在处理的 highcharts 应用程序中添加了缩小功能,但我注意到在重新放大时出现了一些非常糟糕的行为。如果缩放窗口包含图形数据范围之外的区域,则生成的缩放级别不正确忽略该区域。抱歉,如果这有点不清楚,我不确定如何最好地解释它。
这是一个展示问题的小提琴:http: //jsfiddle.net/rnAEB/
$(function () {
chart = new Highcharts.Chart({
chart: {
renderTo: "container",
zoomType: "xy"
},
title: {
text: 'Try zooming outside the data range'
},
tooltip: {
headerFormat: '<b>{series.name}</b><br />',
pointFormat: 'x = {point.x}, y = {point.y}'
},
series: [{
data: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512],
pointStart: 1
}]
});
chart.xAxis[0].setExtremes(-10, 20, true);
chart.yAxis[0].setExtremes(-500, 1000, true);
});
尝试放大从 (5, 1000) 到 (10, -500) 的矩形。生成的缩放区域在 (5, 600) 到 (10, -100) 之间......这显然不是缩放请求所要求的。
我已经尝试挂钩到轴的 setExtremes 事件,并且发生此问题时的界限是未定义的。但是,我不知道如何“劫持” setExtremes 请求以修复未定义的值。我也不能从该事件中递归调用 setExtremes。
这是预期的行为吗?我可以理解为什么您只想缩放数据所在的位置 - 但我真的很希望可以自由缩放到没有数据的位置以进行透视。