y値のマッピングに成功しましたが、スタックレイアウトを使用してスタック棒グラフを作成するときに、x値を値の任意のフィールドにマッピングするのに問題があります。私はJavascriptとd3にあまり詳しくありません。だから私はおそらくここで基本的な何かが欠けています。
データの配列の値はのようになり{ "xInit": 0, "yInit": 91 }
ます。グラフ内とにマップxInit
したい。x
yInit
y
これは機能します(ブライアンクラークによって提案されました):
var st = d3.layout
.stack()
.values(function (d) { return d.values; })
.y(function (v, i) { return v.yInit; })
.out(function (d, y0, y) { d.x = d.xInit; d.y0 = y0; d.y = y; });
そして、これはしません:
var st = d3.layout.stack()
.values(function (d) { return d.values; })
.y(function (v, i) { return v.yInit; })
.x(function (v, i) { return v.xInit; });
次の警告が表示されます。
Unexpected value translate(NaN,0) parsing transform attribute.
Unexpected value NaN parsing x attribute.
stack.x([accessor])
ここで間違って使用していますか?では、どのように使用すればよいですか?
詳細
私の問題を示す完全な例は、この要点に基づいたブロックとして利用できます。次のデータに基づいて積み上げ棒グラフを作成したいと思います。
initialData = [ {
"name": "apples",
"values": [{ "xInit": 0, "yInit": 91 }, { "xInit": 1, "yInit": 290 }, { "xInit": 2, "yInit": 120 }]
},{
"name": "oranges",
"values": [{ "xInit": 0, "yInit": 9 }, { "xInit": 1, "yInit": 49 }, { "xInit": 2, "yInit": 37 }]
}];