這個圈子組佈置的一例(http://bl.ocks.org/4063269)是一個完美的項目我的工作,但它大小都是相對的圓圈彼此:可能在d3.js中使用固定圈大小的圓形包佈局?
是否有指定固定半徑的簡單方法每個圈子?
我搜索了源代碼,例子,谷歌和stackoverflow,似乎無法找到任何有用的東西。
圓圈的確切尺寸對我很重要。
這個圈子組佈置的一例(http://bl.ocks.org/4063269)是一個完美的項目我的工作,但它大小都是相對的圓圈彼此:可能在d3.js中使用固定圈大小的圓形包佈局?
是否有指定固定半徑的簡單方法每個圈子?
我搜索了源代碼,例子,谷歌和stackoverflow,似乎無法找到任何有用的東西。
圓圈的確切尺寸對我很重要。
如果你按照你給的例子代碼中,<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};
}
感謝您的回覆!我實際上嘗試過,但它打破了佈局: http://cl.ly/image/2M3o1T2n2k1V。它應該看起來的樣子是:http://cl.ly/image/1U1b3v3m152W – user2058412 2013-02-12 03:58:24
更新了可能的修復答案。 – 2013-02-12 06:52:11
這是可能的,簡單的事。第一個答案是準確的,但我相信我的是更簡單,更明確,所以我也附加它。
請看看這個例子:jsfiddle
當你按下「恆」按鈕,你會看到這樣的事情:
關鍵代碼行是這樣的:
pack.value(function(d) { return 100; })
這將使數據圓圈半徑不變。 100當然可以是任何常數。你可以在circle pack初始化中應用這一行(很可能這是你的情況),或者重新初始化(就像我的例子)。
希望這會有所幫助。
user2058412,你能看看我的答案嗎?對你有用嗎? – VividD 2014-06-26 11:15:04