2

私はまだ d3 と一般的な JavaScript に慣れていないので、私が見たほとんどのプラクティスはすべて単純な配列に関係していましたが、オブジェクトには関係がありませんでした。現在、json ファイル内のデータを使用して、1 週間のデータを構成する単純なグラフを作成しようとしています。まず、データ構造は、任意の値を使用して次のようになります。

{"2013-08-21":{"orders":"10","revenue":"1000"},
{"2013-08-22":{"orders":"20","revenue":"1800"},
{"2013-08-23":{"orders":"15","revenue":"1200"},
...}

私が今直面している問題は、日付を xScale ドメインに効果的に渡す方法と、注文または収益を yScale ドメインに渡す方法を見つけようとしていることです。CSV または TSV ファイルの場合は、次のように使用できます。

xScale.domain(d3.extent(data, function(d) {return d.date;}));
yScale.domain(d3.extent(data, function(d) {return d.orders;}));

しかし、json オブジェクトで同じことをしようとすると、次のように表示されます。

Uncaught TypeError: #<Object> is not a function

誰かがこの主題に光を当てるのを手伝ってもらえますか? 日付、注文、収益のリスト配列を作成することはできますが、他に方法はありますか?

御時間ありがとうございます!

編集

json ファイルをインポートした後にデータをマップしようとすると、TypeError が発生します。

d3.json("report.json", function(error, json) {
    if (error) return console.warn(error);
    dataset = json;
    dataset = dataset.map(function(d){
        var date = d3.keys(d)[0];
        d[date].date = date;
        return d[date];
    });
});

具体的には、次の行で:

dataset = dataset.map(function(d){ ... }) 

Uncaught TypeError: Object #<Object> has no method 'map'
4

1 に答える 1