2

D3 に慣れようとしていますが、データを正しい形式で取得するのに苦労しています。それぞれに「日付」キーを持つオブジェクトの配列があり、d3.nest を使用してそれらを日付でグループ化しようとしていますが、例を機能させることさえできません ( https://githubから取得) .com/mbostock/d3/wiki/Arrays )。私はそれを必要最小限にまで骨抜きにしましたが、コードは d3 wiki からそのまま引用しています。

var yields = [{yield: 27.00, variety: "Manchuria", year: 1931, site: "University Farm"},
              {yield: 48.87, variety: "Manchuria", year: 1931, site: "Waseca"},
              {yield: 27.43, variety: "Manchuria", year: 1932, site: "Morris"}]

var nest = d3.nest()
    .key(function(d) { return d.year; })
    .entries(yields);

ウィキによると、これは次の構造でデータを整理する必要があります。

[{key: 1931, values: [
    {yield: 27.00, variety: "Manchuria", year: 1931, site: "University Farm"},
    {yield: 48.87, variety: "Manchuria", year: 1931, site: "Waseca"}]},
 {key: 1932, values: [
    {yield: 27.43, variety: "Manchuria", year: 1932, site: "Morris"}]}
]

しかし、使用してチェックするconsole.dir(yields)と、d3.nestを使用する前と同じフラット構造が得られます。ドキュメントから例を取得することさえできないので、次に何を試せばよいかわかりません。初心者を助けますか?

4

1 に答える 1

8

nestではなく、を見たいyieldsyieldsあなたが渡したnestものであり、あなたが出たものです。yields変わらない。

d3 wikiは、より読みやすい方法で物事を書くことができたはずです。

var nest = d3.nest()
    .key(function(d) { return d.year; })

var nested = nest.entries(yields);

nestは、年キーを使用して同様のデータに再利用できるオブジェクトであり、nested1つの出力ですyields。このkey関数はネストオブジェクト自体をentries返しますが、新しいネストされたデータを返します。

于 2013-02-21T20:56:48.663 に答える