31

我在页面上输出一系列的高图。在某些情况下,指定时间段的所有数据可能会返回 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: ""
    }
},
4

8 回答 8

42

我找到了另一个(而且非常简单)的解决方案:

您可以设置 y 轴minRange属性:

yAxis: {
    ...
    minRange : 0.1
}

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

更新:

Highcharts 4.1.9 修复还需要:

        plotOptions: {
            line: {
                softThreshold: false
            }
        }

更新的 js 小提琴

于 2014-04-23T11:51:53.353 回答
14

我能让它“正确”显示它的唯一方法是同时提供一个 yAxismax值。当您不提供具有 y 值的数据元素时,我认为这是一个 HighCharts 问题。它绘制了它认为可以的最佳图表。

于 2012-12-21T16:51:35.403 回答
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”属性。

于 2012-12-21T17:36:41.917 回答
3

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

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

您只需要检查第一个系列轴,如果第一个不为0,则不会出现问题。我可能会为此向高级图表提交拉取请求,尽管我觉得他们出于某种原因打算使用此功能。

于 2013-06-28T14:52:28.963 回答
3

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

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

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

这是一个带有柱形图的示例:http: //jsfiddle.net/84LLsepj/

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

于 2017-03-01T10:33:34.140 回答
0

只需添加“min”选项

yAxis: {
   min: 0
}
于 2014-06-02T09:06:50.777 回答
0

对于 Highcharts 5.xx,您应该能够指定:

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

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

于 2017-04-20T13:54:07.923 回答
0

minRange : 1 或任何你觉得以
softMax 的分数显示的值:100 或任何你觉得

结果

yAxis: {
         minRange : 1,
         softMax: 100
       }
于 2018-03-16T09:12:08.820 回答