2016-07-28 18 views
1

これはやや愚かな質問だと思います。しかし、私はかなりの時間をかけてこれを苦労しています。データフォーマットの正しい方法が自分のデータのためであるかどうかはわかりません。このようになりますハイチャートのxAxisに年間値を表示する方法

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' 
}, 
2001、2002、2003、... -

私は毎年、私のような表示にしたい、このようなデータを持っています

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] 
} 

時刻が固定されていない場合。カテゴリは動的に計算する必要があります。

関連する問題