首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多Y轴的高图同步

多Y轴的高图同步
EN

Stack Overflow用户
提问于 2016-09-08 17:42:20
回答 1查看 1K关注 0票数 0

我有两个图表是同步的。他们有一个空白,以确保他们是一致的对齐。在我的情况下,我有多个可以打开的yAxis,它们位于右侧,与左边相反。我试图使用同样的marginRight方法,但是当第二个、第三个或第四个轴被添加到右边时,它就不会出现,因为没有足够的空间。所以我要处理的是右边的动态空间。高图表处理动态方面时,它只是一个图表,但我需要我的第二个图表有相同的边际,即使它没有这些额外的yAxis。重要的是,这个时间序列数据保持在两个图表中。

处理这件事的方法是什么?

更新:

我在这里创建了一个简单的jsFiddle :在我的实际示例中,http://jsfiddle.net/28hrffv7/showEmpty设置为false,并设置了一个默认隐藏的系列。

代码语言:javascript
复制
{ opposite: true,  title: { text: 'Random Text' }, showEmpty: false}

当他们转动它拥有它的系列是呈现和轴和标题被添加。这个例子显示,第一个图表没有意识到第三个图有三个轴,因此应该有更多的边框。

更新2:更新JS小提琴,以显示问题的更动态性质。当您切换图例中的一个系列时,您可以观察到斧头被添加和删除,这是需要的功能。需要的是保持所有图表在可绘制区域的宽度内保持同步,以便它们都正确地排列。http://jsfiddle.net/28hrffv7/3/

EN

回答 1

Stack Overflow用户

发布于 2016-09-12 14:54:07

您可以对marginRightmarginLeft进行硬编码。

演示1:http://jsfiddle.net/28hrffv7/1/

或者检查哪个marginRight是最高的,并使用新的设置更新所有图表。守则的有关部分:

代码语言:javascript
复制
                }, {
                    data: []
                }]
            }, function(chart){
                if (chart.marginRight > topMarginRight) {
                topMarginRight = chart.marginRight;
                console.log(topMarginRight);
              }
            });
    }); // end of the each function creating the charts
    $.each(Highcharts.charts, function (i, chart) {
        chart.margin[1] = topMarginRight;
      chart.isDirtyBox = true;
      chart.redraw(false);
    })

演示2:http://jsfiddle.net/28hrffv7/4/ (用于高级图表< 5.0.0)

更新:

使用高级图表5+,通过图表更新也可以做到这一点。

代码语言:javascript
复制
    $.each(Highcharts.charts, function (i, chart) {
        chart.update({
        chart: {
            marginRight: topMarginRight
        }
      });
    })

演示3:http://jsfiddle.net/28hrffv7/5/

在每个图表中出现多个系列的情况下,您可以为加载、重绘、afterAnimate等事件调用自定义函数。

演示4:http://jsfiddle.net/acjaLxj1/1/

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

https://stackoverflow.com/questions/39397168

复制
相关文章

相似问题

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