0

我用 Highcharts 制作了一个图表,该图表是从 JSON 加载的。

虽然我对处理 JSON 文件有点陌生......

我希望 Highcharts 在 xAxis 的标签上显示日期(格式:YYYY/MM/DD 即 2013/04/01)。

据我所知,因为我不能用 JSON 写这样的东西,

"pointStart": [Date.UTC(2013, 4, 1)]

我写了毫秒。

我的 JSON:

[
    {
    "yAxis": 0,
    "type": "column",
    "name": "Y label",
    "data": [0,0,153,179,122,126,120,101,110,95,142,88,82,92,115,101,141,162,0,0,0,0,0,7,6,0,10,0,9,4,56,86,66,61,87,72,74,60,83,74,50,73,61,56,90,78],
    "pointStart": 1364774400000,
    "pointInterval": 86400000
},{
    "yAxis": 1,
    "type": "line",
    "name": "Y label 2",
    "color": "#AA4643",
    "data": [4980,4572,5554,6147,5268,5221,5263,5084,4906,5000,5198,4777,4790,4549,4158,4294,4891,4689,4432,3925,3708,3723,3623,3831,3787,4353,4809,5046,4989,4815,4315,4556,4502,4725,4537,4540,4654,4367,4589,4874,4837,5032,5046,4633,4561,4576],
    "pointStart": 1364774400000,
    "pointInterval": 86400000
    }
]

还有我的 javascript:

var options = {
chart: {
    renderTo: 'container'
},
title: {
    text: ''
},
xAxis: {
    type: 'datetime',
    dateTimeLabelFormats: {
        day: '%Y/%m/%d'
    },
    labels: {
        rotation: -45,
        align: 'right',
        formatter: function() {
            return Highcharts.dateFormat('%Y/%m/%d', this.x); //this returns invalid date.
        }
    },
    title: {
        text: ''
    }
},

...

$.getJSON('test.json', function(data) {
        options.series = data;
        chart = new Highcharts.Chart(options);
});

这会invalid date在 xAxis 标签上产生。

但是如果我删除这部分

formatter: function() {
    return Highcharts.dateFormat('%Y/%m/%d', this.x);
}

不返回错误,但结果是1. Apr我不想显示的:(

有什么解决办法吗?

谢谢你。

4

3 回答 3

2

我想出了如下解决方案:

dateTimeLabelFormats: {
    day: '%Y/%m/%d'
},
labels: {
    rotation: -45,
    align: 'right',
    formatter: function() {
        var _date = new Date(this.value),
            _y = _date.getFullYear();
            _m = _date.getMonth() + 1,
            _d = _date.getDate(),
            _result = _y + '/' + (_m < 10 ? "0"+_m : _m) + '/' + (_d < 10 ? "0"+_d : _d);
        return _result;
    }
},
...

将毫秒值放入 Date 对象中,我可以在其中使用诸如getFullYear(),之类的方法处理值getDate()

谢谢。

于 2013-05-27T01:35:35.893 回答
1

您的日期/时间格式错误。不是day: '%Y/%m/%d',需要day: '%Y/%y/%e'dateTimeLabelFormats Highcharts API 参考

于 2013-05-26T18:21:15.057 回答
1

您可以使用http://api.highcharts.com/highcharts#xAxis.labels.formatter和 Highcharts.dateFormat() http://api.highcharts.com/highcharts#Highcharts.dateFormat()

 labels: {
            formatter: function() {
                return Highcharts.dateFormat('%Y/%m/%d',this.value);
            }
于 2013-05-27T12:05:06.273 回答