首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高图多轴-在多个图表上同步轴

高图多轴-在多个图表上同步轴
EN

Stack Overflow用户
提问于 2015-11-26 08:11:51
回答 1查看 1.1K关注 0票数 3

我有两个多轴的高图表。这两组轴代表相同的单位,两个图表是水平对齐的。我创建了一个JSFiddle来演示基于高图样本的设置

http://jsfiddle.net/dennismadsen/gbbzz2jh/

在这个例子中,你可以放大图表上的y轴到左边。请注意,正确的图表上的轴是同步的。使用此afterSetExtremes事件完成的操作:

代码语言:javascript
复制
function syncYAxis(e) {
    var thisAxis = this;
    var thisChart = e.currentTarget.chart;

    Highcharts.each(Highcharts.charts, function (chart) {
        if (chart && chart !== thisChart) {
            var currentAxis = chart.get(thisAxis.options.id);
            currentAxis.setExtremes(e.min, e.max);
        }
    });
}

如果我将正确的图表更改为不同的高级图表,那就不再起作用了。请参见此JSFiddle:

http://jsfiddle.net/dennismadsen/kmuhw0zf/

我尝试调试并将一个afterSetExtremes事件添加到正确的图表轴:

代码语言:javascript
复制
function rightChartAxisChanged(e) {
    var thisAxis = this;
    console.log('Right chart axis changed: '+thisAxis.options.id);
    console.log('min/max: '+e.min+','+e.max);
    console.log('user min/max: '+e.userMin+','+e.userMax);
}

据我所见,e.mine.max中的新的min/max值似乎计算错误。我在setExtremes调用中在syncYAxis中给出的正确值存储在e.userMine.userMax中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-30 11:08:10

嗯,我试过你的演示程序( http://jsfiddle.net/dennismadsen/kmuhw0zf/ )--它工作得很好,但有时它会失败。无论如何,我会用tickPositioner改进第二个图表的逻辑:所以滴答总是得到与第一个相同的数字,例如:http://jsfiddle.net/kmuhw0zf/3/

代码语言:javascript
复制
        tickPositioner: function () {
            return $('#chart1').highcharts().get('axis1').tickPositions.slice();
        },
        id: 'axis1',

此外,您还可以将alignTicks设置为false,因此它将防止高海图逻辑在特定位置强制执行滴答。

对于e.min/e.maxa.userMin/e.userMax -您可以设置例如max = 32.1235,这将存储在e.userMax中,但是图表将呈现max = 35 (对于一个很好的勾号),因此e.max将是35。请注意,对于我来说,您的两个演示都很好(除了alignTicks的问题)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33933452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档