2013-04-28 32 views
1

是否可以使用d3js包装布局调整父级圆圈的大小而不依赖其包含的子级?如何使用d3js包装布局调整父圆半径

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

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

我目前正在设置孩子的父母大小独立,但这似乎被忽略,因为父母的半径是由它所包含的孩子决定的。

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

我没有看到这样类似的问题:

D3JS packed circle layout, padding in relation to parent

但它并没有一个明确的答案。

+0

你是否设法解决这个问题? – BuildingJarl 2014-02-27 12:36:23

回答

0

计算圆的位置和半径,并由pack.nodes()函数返回。通常,你会直接给.data()函数,然后根据它来绘制元素,但是没有任何东西阻止你改变返回值。返回值为pack.nodes()的每个元素都有一个属性parent,如果它是顶级圆圈,并且属性r确定半径,则该属性将为空。

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

+0

这非常接近。这个问题是层次结构中的节点。他们有非零的父母,但也可以有销售额。所以父母的空检查将不起作用。另外,不会与布局的半径混乱并可能造成圈子重叠?它看起来在生成布局时需要考虑这个“额外”数据,而不是在已经生成布局之后。 – lostdorje 2013-04-29 04:17:23

+0

原则上,您可以调整任何圆的半径。是的,这会弄乱内圈的布局。我完全同意在运行布局时需要考虑到这一点,但它并不支持这一点。您当然可以修改布局以考虑额外的值,但这可能很困难。 – 2013-04-29 10:18:41