调用setExtremes后如何在Highcharts中实现“重置缩放”

12

我正在使用setExtremes来放大图表中的细节,并允许用户通过在图表中选择来缩放'x,y'。当用户缩放时,他们会得到一个“重置缩放”按钮,但是当我调用setExtremes时,我不会得到该按钮。

是否有一种方法可以通过编程方式强制出现“重置缩放”按钮?

更新:

调用

if( !chart.resetZoomButton ) {
    chart.showResetZoom();
}

在afterSetExtremes事件处理程序中添加内容可以使按钮出现,但单击它不会产生任何作用。

更新:

我已经改为调用以下代码而不是setExtremes:

chart.xaxis [0] .zoom(minx,maxx); chart.yaxis [0] .zoom(miny,maxy); chart.redraw();

这与用户在图表上选择缩放的效果相同。

4个回答

14

我刚查看了HighCharts源代码,看起来这可能适合你:

chart.showResetZoom();

此外,为了使按钮正常工作,您应该使用axis.zoom而不是设置极值:

axis.zoom(newMin,newMax);

如果有效,请告诉我!


我在x和y轴的afterSetExtremes事件处理程序中调用了这个。现在按钮留在图表上,但点击它没有任何作用。 - SteveP
你尝试过使用axis.zoom()而不是setExtremes吗?它的调用方式类似于axis.zoom(newMin,newMax);也许从该函数触发缩放事件会使按钮功能正常。这只是一个想法。 - MatthewKremer
谢谢你关于axis.zoom()的提示。我会尝试一下的。 - SteveP
1
我在API文档中没看到axis.zoom()方法,是我漏掉了什么吗?它和setExtremes()有什么区别? - Julie
不是很清楚它们的区别,我只知道它可以工作。 “.zoom” 不在文档中,它只存在于源代码中。 - MatthewKremer

7
您可以使用showResetZoom,但是您必须检查重置按钮是否已可见,否则它不会消失
if( !chart.resetZoomButton ) {
    chart.showResetZoom();
}

1
这种方法很有效:
if (!$('.highcharts-button').length) {
    chart.showResetZoom();
}

假设唯一可能显示的按钮是“重置缩放”按钮。如果已经存在,请不要再显示另一个。
如果不进行此检查,则每次调用showResetZoom()时都会添加一个新按钮。单击可见的(最新的)按钮会重置缩放并删除该按钮,但旧按钮仍然可见且无效。

0
如果您正在使用setExtremes,您也可以将min和max设置为null以进行重置:
chart.xAxis[0].setExtremes(null, null)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接