我正在页面上输出一系列的高级图表。在某些情况下,指定时间段内的所有数据都可能返回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: ""
}
},
答案 0 :(得分:41)
我找到了另一个(也很简单)的解决方案:
您可以设置y轴minRange
属性:
yAxis: {
...
minRange : 0.1
}
这使得Highcharts在所有数据为0时呈现yAxis最小值和最大值。
更新:
Highcharts 4.1.9修复还需要:
plotOptions: {
line: {
softThreshold: false
}
}
答案 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)