Highcharts:确保y轴0值位于图表底部

时间:2012-12-21 14:24:22

标签: highcharts

我正在页面上输出一系列的高级图表。在某些情况下,指定时间段内的所有数据都可能返回0值。

在这种情况下,图表如下所示:http://jsfiddle.net/charliegriefer/KM2Jx/1/

只有1个y轴标签,0,它位于图表的中间位置。

我想强制y轴的0值位于图表的底部,这与页面上有数据的其他图表一致。

尝试了各种yAxis属性,例如“min:0”,“minPadding:0”,“maxPadding:0”,“startOnTick:true”。

似乎它应该非常简单,但我不知所措:(

相关的yAxis代码:

yAxis: {
    min: 0, 
    minPadding: 0, 
    startOnTick: true, 
    title: {
        text: ""
    }
},

8 个答案:

答案 0 :(得分:41)

我找到了另一个(也很简单)的解决方案:

您可以设置y轴minRange属性:

yAxis: {
    ...
    minRange : 0.1
}

这使得Highcharts在所有数据为0时呈现yAxis最小值和最大值。

更新:

Highcharts 4.1.9修复还需要:

        plotOptions: {
            line: {
                softThreshold: false
            }
        }

updated js fiddle

答案 1 :(得分:13)

我只能通过提供yAxis max值来让它“正确”显示它。我认为当您没有提供具有y值的数据元素时,这是一个HighCharts问题。它绘制了它认为可以的最佳图表。

答案 2 :(得分:5)

我还把它发布到了HighCharts论坛,在那里我收到了似乎有效的回复。不幸的是,它将涉及我在渲染图表之前对数据进行一些预处理,以便检查所有“0”数据值......但它会起作用。只是希望HighCharts有更“内置”的东西。

因此,在总结“y”值后,如果我得到0,则y轴属性应如下所示:

yAxis: {
    minPadding: 0, 
    maxPadding: 0,         
    min: 0, 
    max:1,
    showLastLabel:false,
    tickInterval:1,
    title: {
            text: ""
    }
}

请参阅:http://jsfiddle.net/KM2Jx/2/

键似乎是“max”和“showLastLabel”属性。

答案 3 :(得分:3)

这是我提出的一个修复,它不需要对数据进行任何预处理,只需让highcharts这样做,就像在更新之前一样。 http://jsfiddle.net/QEK3x/

if(chart.yAxis[0].dataMax === 0)
{
   chart.yAxis[0].setExtremes(0, 5);
}

您只需要检查第一个系列轴,就好像第一个系列轴不是0那么问题不会发生。我可能会向高图表提交拉取请求,尽管我觉得他们出于某种原因想要使用此功能。

答案 4 :(得分:2)

从Highcharts 5.0.1开始,您也可以使用softMax。

  

softMax:数字
  轴的软最大值。如果系列数据最大值大于此值,则轴将保持此最大值,但如果系列数据最大值更高,则轴将弯曲以显示所有数据。

yAxis: {
    min: 0,
    softMax: 100,
    ...
}

以下是柱形图的示例:http://jsfiddle.net/84LLsepj/

请注意,目前,在Highcharts 5.0.7中,它似乎并不适用于所有类型的图表。正如您在this other jsfiddle中看到的那样,它不适用于折线图。

答案 5 :(得分:0)

只需添加" min"选项

yAxis: {
   min: 0
}

答案 6 :(得分:0)

对于Highcharts 5.x.x,您应该只能指定:

yAxis: {
  softMin: 0,
  softMax: 1,
};

这不适用于折线图,这要求您还在与上面相同的配置对象中设置minRange。尝试使用不同的值,因为定义了例如minRange: 6,在yAxis上创建了一个介于0和4之间的范围。

答案 7 :(得分:0)

minRange:1或者你感觉如何以分数显示   softMax:100或者你感觉如何

Result

yAxis: {
         minRange : 1,
         softMax: 100
       }