2016-07-28 62 views
1

我想这是一个愚蠢的问题。但是,我在这段时间以来一直在努力挣扎,而没有找到正确的数据格式对我的数据是什么。如何在Highcharts中的xAxis上显示年度值

我有这样的年度数据,我希望有这样显示 - 2001年,2002年,2003年,...:

time,lat,lon,Npp_1km 
Date.UTC(2001/1/1),15,-90,1.266112766 
Date.UTC(2002/1/1),15,-90,1.166646809 
Date.UTC(2003/1/1),15,-90,1.020591489 
Date.UTC(2004/1/1),15,-90,1.016010638 
Date.UTC(2005/12/31),15,-90,1.08053617 
Date.UTC(2006/12/31),15,-90,1.181195745 

和我Highcharts代码如下所示:

xAxis: { 
    labels: { 
    style: { 
     color: "#666666" 
    }, 
    x: 0 
    }, 
    gridLineWidth: 1, 
    gridLineDashStyle: 'Dot', 
    tickWidth: 0, 
    type: 'datetime' 
}, 

但是xAxis不显示年份,而是显示一些“00:00:00.001”。 我已经尝试了许多不同的时间戳格式 - “2001-1-1”,“2001/1/1”,“1/1/2001”,“1-1-2001”,“Date.UTC(2001/1/1)”。我也改变了“dateTimeLabelFormats”。但一切都是徒劳的。它不吐出“2001 - 2002 - 2003 - 2004”。

Here is a fiddle

什么是实现这一目标的正确途径?感谢任何提示!

回答

2

解析数据时出现问题。你所有的x值都不正确 - 这就是你问题的原因。你需要分析它有一点点不同,如果你想要得到您的图表正确的数据:

$.get('data.csv', function(data) { 
var temp = [] 
// Split the lines 
var lines = data.split('\n'); 
// For each line, split the record into seperate attributes 
$.each(lines, function(lineNo, line) { 
    var items = line.split(','); 
    if (lineNo !== 0) { 
    items[0] = items[0].substring(items[0].indexOf('(') + 1, items[0].indexOf(')')); 
    var x = new Date(items[0]), 
     y = parseFloat(items[3]); 
    if (!isNaN(y)) { 
     x = x.getTime(); 
     options.series[0].data.push([x, y]); 
    } 
    } 
}); 

在这里你可以看到一个例子是如何工作的: http://jsfiddle.net/pcpq6mtr/4/

问候,

0

如果时间是固定的,一个简单的解决方案可以将类别放在xAxis中。

xAxis { 
    categories:[2001,2002,2003,2004,2005,2006] 
} 

如果时间不固定。类别需要动态计算。