是否可以使用d3js包布局调整父圆的大小,而不依赖于它包含的子元素?
我正在使用d3js包布局来显示圆圈的层次结构。每个圆圈代表一个销售组。嵌套在其中的圈子是子销售组。每个组的总销售额由圆半径表示。包括父母在内的每个群体都可以拥有自己的销售额。
我意识到比例可能不准确,但我也想调整父圆的半径,以表明父组有自己的销售。
我目前正设置子项的父级大小独立,但这似乎被忽略,因为父级半径由其包含的子项决定。
是否可以在包布局中调整父半径?
我确实看到了类似的问题:
D3JS packed circle layout, padding in relation to parent
但它没有明确的答案。
答案 0 :(得分:1)
圆圈的位置和半径由pack.nodes()
函数计算并返回。通常,您可以直接将它赋予.data()
函数,然后根据它绘制元素,但没有什么能阻止您更改返回值。 pack.nodes()
返回值的每个元素都有一个属性parent
,如果它是顶级圆,则属性为{null},而属性r
则确定半径。
实现您想要的最简单方法是简单地更改包布局返回的顶级圆的半径。也就是说,迭代节点数组并在parent
为空时更改半径。