初心者はここd3.jsの塗りつぶし属性にアクセスする方法は、私はd3.stack()
(ないd3.layout.stack()
ノート)を使用して、積み上げ棒グラフのサンプルを理解しようとしていますサンプルリンク:http://bl.ocks.org/mbostock/3886208(Mike Bostock製)d3.js:から:SVG族元素(積み上げ棒グラフ)
私は、それぞれが1つの 'レイヤ' /年齢グループを表す各svgグループ要素のfill属性にアクセスしようとしています。そうするために、私は「入力」の部分に少し変更を行います。console.log(seriesG);
はzi {_groups: Array[1], _parents: Array[1]}
になったので
var seriesG = g.selectAll(".serie")
.data(function(){return stackedColumns;})
.enter().append("g")
.attr("class", "serie")
.attr("fill", function(d) {return z(d.key); });
は、私が7歳の範囲のグループを表し7 SVG族元素が_groups
メンバーでアクセス可能であることを考え出しオブジェクト。
ここで、この基本的な再帰ルーチン:
seriesG._groups.forEach(function(d, i){
console.log(d);
});
で、ブラウザ要素インスペクタコンソール(opera)に[g, g, g, g, g, g, g]
と表示される各svgグループ要素にアクセスできます。私が把握しようとしているのは、 'd'データのfill属性にアクセスする正しい構文です。そして、ブラウザのコンソールを見て、 'fill'が 'd'データのメンバー属性'outerHTML'
のメンバーであることを知っているので、まずこの 'outerHTML'属性にアクセスする方法を知っていなければなりません。私は、様々な構文を試みた:
console.log(d.attr("outerHTML"));
console.log(d.attr.outerHTML);
console.log(d.outerHTML);
console.log(d["outerHTML"]);
残りの二つがundefined
操作している間最初の二つの試みは、Uncaught TypeError: d.attr is not a function
もたらしました。
私の質問の短いバージョンでは:d3.stack()
を使用して作成された各svgグループ要素の塗りつぶしにアクセスする正しい構文は何ですか?
は私の究極の目標は、このサンプル・リンクに様々な機能の似を追加することです:http://bl.ocks.org/KatiRG/f7d064cd9c3efbc3c360
、あなたは*しますforeachを実行する必要があります* * g *要素の属性にアクセスするために、この配列に追加します。ヒント@Mario Alexandroサンティーニ、 'seriesG._groups.forEach(関数(D、I){ \t d.forEach(関数(データム){ \t \tコンソールの –
おかげ。log(datum); " \t} });' ... 'を表示するのに成功しましたが、まだ半分です。 fill属性にアクセスする正しい構文ですか? 'console.log(datum.attr(" fill "));' stackBarChart.html:70 Uncaught TypeError:datum.attrは関数ではありません。 '' console.log(datum.fill); 'と' console.log(datum ["fill"]); 'は_undefined操作です。 –
Rickard
私はあなたの目的を明確にするためにあなたの質問を修正することをお勧めします。そうであるように、あなたの疑問はあなたの '._group'アンチパターンを明確にしないようにする方法です。 –