2013-02-10 9 views
8

この円パックのレイアウト例(http://bl.ocks.org/4063269)は、私が働いているプロジェクトのために完全である、しかし、それは、互いに対して各界のサイズ:円のサイズが固定されたd3.jsの円パックレイアウトを使用できますか?

enter image description here

固定半径を指定する簡単な方法があります各サークルのために?

私はソースコード、サンプル、google、およびstackoverflowを精査しており、役に立たないものは見つけられません。

サークルの正確なサイジングは私にとって重要です。

+0

user2058412、私の答えを見ていただけますか?それはあなたにとって有益ですか? – VividD

答えて

1

あなたが与えた例のコード、<circle>要素の大きさは、ここで決定されている従っている場合:

node.append("circle") 
    .attr("r", function(d) { return d.r; }) 
// ... 

50、たとえば、に円の大きさを修正するには、あなたがこれを行うことができます:

node.append("circle") 
    .attr("r", function(d) { return 50; }) 
// ... 

更新

この意志、howeve r、コメントで指摘されているレイアウトを破る。これを修正するためには、各ノードに同じvalueを提供することができます。

// Returns a flattened hierarchy containing all leaf nodes under the root. 
function classes(root) { 
    var classes = []; 

    function recurse(name, node) { 
    if (node.children) node.children.forEach(function(child) { recurse(node.name, child); }); 
    else classes.push({packageName: name, className: node.name, value: node.size}); 
    } 

    recurse(null, root); 
    return {children: classes}; 
} 

へ:

// Returns a flattened hierarchy containing all leaf nodes under the root. 
function classes(root) { 
    var classes = []; 

    function recurse(name, node) { 
    if (node.children) node.children.forEach(function(child) { recurse(node.name, child); }); 
    else classes.push({packageName: name, className: node.name, value: 1}); 
    } 

    recurse(null, root); 
    return {children: classes}; 
} 
+0

返信いただきありがとうございます!私は実際にそれを試みたが、それはレイアウトを破る: http://cl.ly/image/2M3o1T2n2k1V。見える方法は次のとおりです。http://cl.ly/image/1U1b3v3m152W – user2058412

+0

可能な修正を加えて答えを更新しました。 –

6

ことが可能であり、かつ行うためのシンプルなもの。最初の答えは正確ですが、私は私の方がもっとシンプルで明示的だと信じていますので、私もそれを付けています。

この例を見てみてください:あなたは、「定数」ボタンを押すと、あなたはこのようなものが表示されますjsfiddle

enter image description here

をキーコード行はこれです:

pack.value(function(d) { return 100; }) 

これは、円の半径をデータの定数とみなします。 100は任意の定数であってもよい。この行は、サークルパックの初期化(おそらくこれに当てはまる)または再初期化(私の例のように)で適用することができます。

これが役に立ちます。