如何通过在高图中比较双y轴来获得最大值?

时间:2018-11-13 03:26:13

标签: javascript jquery highcharts

我有一个具有双y轴的图表,如何从这两个图表中获取最小值和最大值?

load: function () {
      var series = this.series,
      max = series[0].dataMax,
      min = series[0].dataMin;

      series.forEach(function (serie) {
          if (serie.dataMax > max) {
          max = serie.dataMax;
      }

      if (serie.dataMin < min) {
          min = serie.dataMin;
      }
});

 this.yAxis[0].update({
     min: min,
     max: max
 });

我正在尝试上述方法,但它只会使任一侧获得最大值并更新轴值。

如何使两个y轴使用相同的最大值?

2 个答案:

答案 0 :(得分:0)

要从轴上获取最小/最大值,请使用getExtremes,它返回一个ExtremesObjectExtremesObject具有以下属性:

  

dataMax,dataMin,max,min,userMax,userMin

如果要设置新的最小/最大值,则应使用setExtremes

  

setExtremes([newMin] [,newMax] [,重绘] [,动画] [,eventArguments])

     

设置渲染时间之后的最小和最大轴。如果startOnTick和endOnTick选项为true,则将最小值和最大值四舍五入到最接近的刻度。为避免这种情况,可以在调用setExtremes之前将这些选项设置为false。另外,setExtremes不允许的范围小于minRange选项,该范围默认为5个点。

因此,要从两个轴获取最小值和最大值,可以对最小值进行如下操作(如果要根据数据调整视图而不是手动设置极限值):

let firstAxisExtremes = chart.yAxis[0].getExtremes(),
secondAxisExtremes = chart.yAxis[1].getExtremes(),
min, max;
if(firstAxisExtremes.dataMin <= secondAxisExtremes.dataMin) {
  min = firstAxisExtremes.dataMin
} else {
  min = secondAxisExtremes.dataMin
}

API参考getExtremessetExtremesExtremesObject

答案 1 :(得分:0)

此外,您可以使用当前代码并设置yAxis.linkedTo属性:

  

...

     

将轴链接到主动轴时,将采用相同的轴。   极端作为主节点,但由最小或最大或按   setExtremes。 (...)

yAxis: [{}, {
    linkedTo: 0,
    opposite: true
}]

实时演示:http://jsfiddle.net/BlackLabel/n5bzrqs8/

API:https://api.highcharts.com/highcharts/yAxis.linkedTo