6

我有一个每日图表,跨越 00:00 到 23:59。但是对于实时数据,假设当前是上午 9 点,默认情况下它会将图表从 00:00 拉伸到 09:00,这对我来说看起来不太好。我想要的是同一天 23:59 的 x 轴最大值,因此它将显示 09:00 - 23:59 为空白。我试过$graph["xAxis"]["max"] = (time()+86400)*1000但无济于事。有什么建议吗?谢谢!

4

3 回答 3

13

(虽然这是一个老问题,但我使用谷歌搜索来到这里,当在 highcharts 中搜索 x 轴的最大时间时,它仍然非常位于搜索结果的顶部,所以我认为这个评论仍然有用。)

对于旧版本的 highcharts,可接受的答案可能是正确的,但在当前版本 (v3.0.7) 中,您还可以将 xAxis.max 属性设置为您希望图表结束的日期时间。这看起来像这样,并且是 IMO 一种更清洁的解决方案:

$(function () {
    var chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container'
        },
        xAxis: {
            type: 'datetime',
            max: Date.UTC(2010, 0, 2),
            dateTimeLabelFormats: {
                day: '%e of %b'   
            }
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6],
            pointStart: Date.UTC(2010, 0, 1),
            pointInterval: 1 * 3600 * 1000 // one hour
        }]
    });
});

请参阅此 jsfiddle 示例

于 2013-11-02T12:46:17.637 回答
8

Highcharts 将仅显示指定的最后一个数据点。如果您想强制它显示 0900 - 23:59,您将必须将所有数据点传递给您想要显示的那些时间,但对于值传递 null。这是一个示例:jsfiddle 示例

一旦数据点超过小时范围,它将自动以不同的方式格式化数据时间标签。您可能希望通过dateTimeLabelFormats控制数据标签的格式。

于 2012-05-27T03:59:52.883 回答
1

如上一个答案所述,默认情况下,

Highcharts 将仅显示指定的最后一个数据点。

但是,正如您在默认 jsfiddle 中看到的 min max setting,除了 min 和 max 之外,您还必须指定 endOnTick 和 startOnTick 为假。此外,在处理日期时间类型的缺失数据时,您需要将 ordinal 设置为 false 以便为空数据留出空间。

这意味着您的 xAxis 应如下所示:

xAxis : {
    allowDecimals : false,
    endOnTick : false,
    max : /** Date in timestamp for the end the day */,
    min : /** Date in timestamp for the beginning the day */,
    ordinal : false,
    startOnTick : false,
    type : 'datetime'
},
于 2014-10-29T15:43:53.690 回答