首页 > 解决方案 > Highcharts:如何根据显示的数据动态设置yAxis的最大值?

问题描述

我在这里有两个图表,我在其中使用蜡烛的静态数据。让我们考虑第二个 Y 轴,其中几个给定蜡烛的最大值是 215。

在此处输入图像描述

在我提供的代码中,这个 y 轴的最大值设置为:

yAxis: [{
   ...
}, {
    max: 215*4
}],

从那里我们可以看到我将最大值的值硬编码为215*4. 我需要做的是,能够动态获取当前值并将其乘以 4。

我试过这样:

yAxis: [{
    ...
}, {
    max: this.getExtremes().dataMax * 4
}],

但似乎不起作用,似乎this.getExtremes()只能在事件中使用。那么有什么办法可以根据当前显示的最大值来设置最大值吗?

我也尝试了以下(但它仍然不起作用)。

render: function() {
  let yAxisExtremesVolumeMax = this.yAxis[1].getExtremes().dataMax;
  this.yAxis[1].update({
    max: yAxisExtremesVolumeMax * 4
  });
},

无论如何,我不确定我是否要这样检查,因为render事件可能被调用太多次,所以我更喜欢其他选择。

标签: highcharts

解决方案


尝试将此解决方案与负载一起使用,而不是渲染。在渲染回调中进行更新会创建无限循环。代码:

  chart: {
    events: {
      load() {
        let chart = this,
          max = chart.series[1].dataMax;

        chart.yAxis[1].update({
          max: max * 4
        })
      }
    }
  },

演示:https ://jsfiddle.net/BlackLabel/c6qjnf5z/


推荐阅读