如何使用d3js包布局调整父圆半径

时间:2013-04-28 06:00:56

标签: d3.js

是否可以使用d3js包布局调整父圆的大小,而不依赖于它包含的子元素?

我正在使用d3js包布局来显示圆圈的层次结构。每个圆圈代表一个销售组。嵌套在其中的圈子是子销售组。每个组的总销售额由圆半径表示。包括父母在内的每个群体都可以拥有自己的销售额。

我意识到比例可能不准确,但我也想调整父圆的半径,以表明父组有自己的销售。

我目前正设置子项的父级大小独立,但这似乎被忽略,因为父级半径由其包含的子项决定。

是否可以在包布局中调整父半径?

我确实看到了类似的问题:

D3JS packed circle layout, padding in relation to parent

但它没有明确的答案。

1 个答案:

答案 0 :(得分:1)

圆圈的位置和半径由pack.nodes()函数计算并返回。通常,您可以直接将它赋予.data()函数,然后根据它绘制元素,但没有什么能阻止您更改返回值。 pack.nodes()返回值的每个元素都有一个属性parent,如果它是顶级圆,则属性为{null},而属性r则确定半径。

实现您想要的最简单方法是简单地更改包布局返回的顶级圆的半径。也就是说,迭代节点数组并在parent为空时更改半径。