代码之家  ›  专栏  ›  技术社区  ›  Crazy

如何通过比较highchart中的双y轴获得最大值?

  •  0
  • Crazy  · 技术社区  · 6 年前

    我有一个双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 回复  |  直到 6 年前
        1
  •  0
  •   ewolden    6 年前

    得到 轴的最小/最大值,使用 getExtremes 它返回一个 ExtremesObject . 这个 极端对象 具有以下属性:

    数据最大,数据最小,最大,最小,用户最大,用户最小

    如果你想的话 设置 应该使用的新最小/最大值 setExtremes

    setextremes([newmin][,newmax][,redraw][,animation][,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引用: 求极端 , 设置极端 , 极端对象

        2
  •  0
  •   ppotaczek    6 年前

    另外,您可以使用当前代码并设置 yAxis.linkedTo 财产:

    当一个轴链接到一个主轴时,它将采取相同的 作为主站的极端,但由最小值或最大值或 设置极端。(…)

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

    现场演示: http://jsfiddle.net/BlackLabel/n5bzrqs8/

    应用程序编程接口: https://api.highcharts.com/highcharts/yAxis.linkedTo