将Highcharts的y轴最小值设置为0,除非有负数数据。

26

我在使用Highcharts时遇到了一个问题,我需要通过JSON调用生成许多不同的图表。

对于其中大多数图表,我需要将y轴最小值设置为0,但有几种情况需要显示负值。我该如何告诉Highcharts仅在数据中没有负值时将最小y轴值设置为0?这是否可能?

谢谢


如果您正在使用Highcharts 5.0及以上版本,以下是最佳/正确解决方案的链接:https://dev59.com/iGQn5IYBdhLWcg3w_LNH#41105873 - David Chelliah
5个回答

11
你要找的选项叫做“softMin”,它在版本5.0.1中引入。文档将其描述为:“轴的软最小值。如果系列数据的最小值大于此值,则轴将保持在此最小值,但是如果系列数据的最小值较低,则轴将弹性显示所有数据。”
yAxis: {
    softMin: 0
}

http://api.highcharts.com/highcharts/yAxis.softMin


8
你可以在y轴上添加内容:
 yAxis: {
            title: {
                text: 'Title of the y-axis'
            },
            min: 0 // this sets minimum values of y to 0
        },

11
如果数据中没有负值,这将始终将最小值设为0。 问题是:“如何告诉Highcharts只有在数据中没有负值时才具有y轴最小值为0?” - Mustafa
完美解决方案。节省了一些用户界面空间。 - sansid1983

7

我通过使用 setExtremes 创建了一个函数来实现这个目标。

var setMin = function () {
  var chart = this,
  ex = chart.yAxis[0].getExtremes();

  // Sets the min value for the chart 
  var minVal = 0;

  if (ex.dataMin < 0) {
    minVal = ex.dataMin;
  }

  //set the min and return the values
  chart.yAxis[0].setExtremes(minVal, null, true, false);
}

然后在你的图表中,你可以这样调用它:
$('#container').highcharts({ 
  chart: {
    events: {
      load: setMin
    }
  },
});  

5
您可以设置“floor”,这定义了min的最小可能值。当添加负值时,它们将不可见!(http://api.highcharts.com/highcharts/yAxis.floor)
yAxis: {
    floor: 0
}

我知道这个问题很久以前就被问过了,当时还没有这个属性。但是我现在遇到了这个问题,我想其他人也会很高兴不必再搜索。


1
在最新版本中,这个可以工作。 min:0 也可以工作。 - GuyFromChennai

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接