D3.js d3圆形包装布局中气泡大小的控制

D3.js d3圆形包装布局中气泡大小的控制,d3.js,circle-pack,D3.js,Circle Pack,在一个活生生的圆圈里,像这样打包d3图表 气泡的大小将始终适合填充矩形绘图画布。有没有一种方法可以使气泡的大小保持一致,从而使气泡变小? 同时,因为它会放大,即使传入更小的值,半径也不会变小 例如:如果数据从[{“a”,40},{“b”,50},{“c”,60}]切换到 [{a',4},{b',8},{c',10}],理想情况下,圆会按比例变小 如何控制规模?谢谢。d3.pack()有一个名为size的方法。根据API: 如果指定了大小,则将此包装布局的大小设置为指定的两元素数字数组[widt

在一个活生生的圆圈里,像这样打包d3图表

气泡的大小将始终适合填充矩形绘图画布。有没有一种方法可以使气泡的大小保持一致,从而使气泡变小?

同时,因为它会放大,即使传入更小的值,半径也不会变小

例如:如果数据从[{“a”,40},{“b”,50},{“c”,60}]切换到 [{a',4},{b',8},{c',10}],理想情况下,圆会按比例变小

如何控制规模?谢谢。

d3.pack()
有一个名为
size
的方法。根据API:

如果指定了大小,则将此包装布局的大小设置为指定的两元素数字数组[width,height],并返回此包装布局

例如,在你分享的bl.ock中,我们可以做

.size([width/2, height/2])
。。。减少包装面积

看看这个更新的bl.ocks,我在SVG中放置了一个矩形以显示缩小的区域和淡紫色背景:

编辑

这是一个针对您的编辑的编辑,这在S.O.回答中通常不是一个好的做法,但我相信这一点值得澄清:更改数据并不重要

你在编辑中说

如果数据从
[{a',40},{b',50},{c',60}]
切换到
[{a',4},{b',8},{c',10}]
,理想情况下,圆圈会按比例变小

不,他们不会的!布局获取数据并占用最大可用空间。例如,即使您有这样一个对象:

[{name:"foo", size:1}]

以下是您将看到的内容:

谢谢..我已经编辑了问题以进行澄清。我认为调整宽度和高度会使整个水滴变小,但很难计算出每个圆圈的比例大小。答案仍然是我在这里解释的答案。布局将获取任何数据并填充
大小
中指定的空间。如果“a”元素减少一半,“b”元素增加10倍,我如何知道宽度和高度的总体大小。“布局获取数据并占用最大可用空间”是这里的问题。所以我猜你的答案是按比例缩放是impossible@santoku是的,没有黑客是不可能的,这不是圆形包装的工作方式。