0

d3.js で作成しているグラフ用にこのサンプル データをフォーマットするにはどうすればよいですか?

[
    [
        [
            "2",
            "2013-01-02 00:00:00+00"
        ],
        [
            "3",
            "2012-12-28 00:00:00+00"
        ],
        [
            "3",
            "2012-12-27 00:00:00+00"
        ],
        [
            "1",
            "2012-12-26 00:00:00+00"
        ],
        [
            "1",
            "2012-12-24 00:00:00+00"
        ],
        [
            "4",
            "2012-12-21 00:00:00+00"
        ],
        [
            "1",
            "2012-12-20 00:00:00+00"
        ]
    ],
    [
        [
            "1",
            "2012-12-27 00:00:00+00"
        ],
        [
            "2",
            "2012-12-21 00:00:00+00"
        ],
        [
            "2",
            "2012-12-18 00:00:00+00"
        ],
        [
            "1",
            "2012-12-17 00:00:00+00"
        ],
        [
            "1",
            "2012-11-27 00:00:00+00"
        ],
        [
            "1",
            "2012-11-03 00:00:00+00"
        ],
        [
            "1",
            "2012-10-27 00:00:00+00"
        ]
    ]
]

現在、d3 がこのデータを解析しようとすると、私の JavaScript コンソールはUncaught TypeError: Cannot use 'in' operator to search for '_dateElement' in NaNd3.v3.js:1033 内に表示されます

d3 は引用符で囲まれた数字を処理したくないようです。引用符がないと無効な json が作成され、ajax 呼び出しは返されません。つまり、d3 関数で配列を解析できません。

d3 は json を解析してフォーマットできると思いますが、私は行き詰まっています。このデータをフォーマットするにはどうすればよいですか。日付オブジェクトは X 軸の昇順になり、Y 軸は整数値の最大値になります

4

1 に答える 1

2

入力配列を解析して、必要な形式のデータを含む出力配列にする必要があります。C.Reed がコメントで述べているように、parseInt を使用して文字列を数値に変換し、d3.time.format を使用して文字列を日付に変換します。 https://github.com/mbostock/d3/wiki/Time-Formatting

var date_in = "2013-01-02 00:00:00+00";
var format = d3.time.format("%Y-%m-%d 00:00:00+00");
var date_out = format.parse(date_in); 

(時間は常に 0 であると仮定します)

于 2013-01-03T12:14:30.843 に答える