高图-重置同步图表中的缩放

时间:2019-01-03 14:39:09

标签: javascript highcharts

我正在使用 syncExtremes 函数来同步多个图表(及其缩放),如下例所示:

https://jsfiddle.net/pz2bak0u

但是我遇到了两个问题,我似乎找不到解决方法。第一个是,如果您在不重置的情况下在不同的图表中多次缩放,然后单击重置缩放按钮之一,则其他“重置”缩放按钮会挂起(我希望它们消失单击时没有任何功能。

然后我修改了小提琴以允许进行 xy 缩放:

https://jsfiddle.net/47dz68Lt

如果放大第一个图表,然后放大第二个图表,然后放大第三个图表,并尝试取消放大第一个图表,其他两个图表将保持放大一半。

我尝试过 chart.xAxis[0].setExtremes(null, null); 但还没有运气

是否甚至可以在x缩放示例中同时重置所有图表中的所有xy缩放?

1 个答案:

答案 0 :(得分:0)

当前,您仅使用xy缩放类型重置x轴极限,还需要重置y轴极限:

var H = Highcharts;

H.wrap(H.Chart.prototype, 'zoomOut', function(proceed) {

    proceed.apply(this, Array.prototype.slice.call(arguments, 1));

    H.charts.forEach(function(chart) {
        if (chart !== this) {
            chart.yAxis[0].setExtremes(null, null, undefined, false);
        }
    }, this);
});

要控制resetZoomButton的显示,可以包装showResetZoom方法,例如:

H.wrap(H.Chart.prototype, 'showResetZoom', function(proceed) {
    var visibleBtn = false;

    H.charts.forEach(function(chart) {
        if (chart.resetZoomButton) {
            visibleBtn = true;
        }
    });

    if (!visibleBtn) {
        proceed.apply(this, Array.prototype.slice.call(arguments, 1));
    }
});

实时演示:https://jsfiddle.net/BlackLabel/bg7L1nev/

文档:https://www.highcharts.com/docs/extending-highcharts/extending-highcharts