2016-07-28 66 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] 
} 

如果時間不固定。類別需要動態計算。