d3.layout.pack()についてのいくつかの簡単な質問
-
13-12-2019 - |
質問
この単純なJSFIDDLEを見てください。 http://jsfiddle.net/perikut/9quvw/ 2 / (Firefoxを使用している場合は申し訳ありませんが、理由がよくないのかわかりません...)
私たちのオブジェクトの中では、データの抽出データを示すために「子供」よりも別の言葉を使うことができますか?(すべての例では、このデータ構造に従うのを参照してください。下記参照)。それを示す場所はどこですか?
グループ/親から子供を表示/非表示にするために、「グループ」パラメータを2回宣言することを余儀なくされているので、コードをかなり不足しています(JSFIDDLEを参照)。
Group1の子ノードを直接選択してアニメーションを貼り付ける方法はありませんか?将来的にははるかに複雑なデータ構造が欲しいので、このような基本的な基本を知る必要があります。
現在のデータ構造:
data = {
name:'root',
group:'no_group',
children:[
{
group: 'group1',
children:[
{ group:'group1',name:'a1',value:10,color:'red' },
{ group:'group1',name:'a2',value:40,color:'lightcoral' }
]
}
, { .... }
. 解決
階層レイアウト、すべてのノードに一連の<< href="https://github.com/mbostock/d3/wiki/hierarchy-layout#wiki-nodes" rel="nofollow"> "parent"属性を含む標準属性。そのため、「Group」属性を指定したり、特定のノードの子を選択するときは代わりに「親」を使用したりできます。
d3.selectAll("circle").filter(function(d) { return d.parent.name === "foo"; });
.
または、ノードオブジェクト自体への参照がある場合は、オブジェクト参照で比較することができます。
var parent = nodes.filter(function(d) { return d.name === "foo"; });
d3.selectAll("circle").filter(function(d) { return d.parent === parent; });
.
ここでは、各ノードに「名前」属性があると仮定しています。
は、異なる属性から子を取得することを使用しても記載されています。はい、これは、 "" Children "Accessor を使用して実現できます。これにより、ノードの子がそのノード上の「子」という属性に保存し、すでにそこにあるかもしれないものは上書きされます。