当所有值均为零时,删除highcharts区域图表下方的间隙

当所有值均为零时,删除highcharts区域图表下方的间隙,highcharts,Highcharts,我在highcharts版本5.0.6中使用下面的简单区域图表 如果任何值不是零值,则零值向下移动到轴: 当所有值均为零时,如何确保零均位于x轴上,且没有间隙 如果设置了yAxismin和max值,则间隙将不存在。我假设您有动态数据,所以很难将这些值设置为静态。因此,您可以这样做: 添加一个加载事件,该事件在加载后遍历图形中的所有点,并检查它们是否都为零。如果它们都为零,则使用更新功能显式设置yAxismin和max。您需要设置如下图表选项: chart: { events: {

我在highcharts
版本5.0.6
中使用下面的简单
区域
图表

如果任何值不是零值,则零值向下移动到轴:

当所有值均为零时,如何确保零均位于x轴上,且没有间隙


如果设置了yAxis
min
max
值,则间隙将不存在。我假设您有动态数据,所以很难将这些值设置为静态。因此,您可以这样做:

添加一个加载事件,该事件在加载后遍历图形中的所有点,并检查它们是否都为零。如果它们都为零,则使用更新功能显式设置yAxis
min
max
。您需要设置如下图表选项:

chart: {
  events: {
    load: function() {
      let allZero = true
      let seriesData = this.series[0].data
      for (let i = 0; i < seriesData.length; i++) {
        if (seriesData[i].y != 0) {
          allZero = false
        }
      }
      if (allZero) {
        this.update({
          yAxis: {min: 0, max: 1}
        }, true)
      }
    }
  }
},
图表:{
活动:{
加载:函数(){
设allZero=true
设seriesData=this.series[0]。数据
for(设i=0;i
var chart=Highcharts.chart('container'{
图表:{
活动:{
加载:函数(){
设allZero=true
设seriesData=this.series[0]。数据
for(设i=0;i

当只有一个y值时,这是计算刻度最小值和最大值的一般问题。图表不能计算极值,所以线在中间。很久以前,有人报告称xAxis的对齐是错误的,现在已经修复了

无论如何,通用的解决方案是使用简单的插件来改变这种行为,并与xAxis保持一致:


这是一个很好的解决方案,但我必须调整代码,因为我在tickpositions数组中有4个值,四个月中每个值一个。
Highcharts.wrap(Highcharts.Axis.prototype, 'setTickPositions', function(proceed, secondPass) {
  proceed.call(this, secondPass);
  if (this.tickPositions.length === 1 && this.options.alignToAxis) {
    this.min = 0;
    this.max *= 2;
  }
});