根据d3.js中的json数据动态设置气泡图宽度和高度

根据d3.js中的json数据动态设置气泡图宽度和高度,d3.js,D3.js,我想根据节点数设置气泡图的宽度和高度。随着节点数的增加,气泡图的大小也会增加,但我无法理解我的宽度和高度的增加比例。我有固定大小的节点。如果要调整svg的大小,添加更多节点后,只需再次选择svg并设置宽度和高度属性。还可以创建具有特定半径的节点。假设您定义var r=50,svg的初始宽度为var width=500然后在添加一个节点后,可以将宽度增加 d3.select("svg"). attr("width", width + (2*r)); 您还可以通过执行以下操作来获取节点的当前半

我想根据节点数设置气泡图的宽度和高度。随着节点数的增加,气泡图的大小也会增加,但我无法理解我的宽度和高度的增加比例。我有固定大小的节点。

如果要调整svg的大小,添加更多节点后,只需再次选择svg并设置宽度和高度属性。还可以创建具有特定半径的节点。假设您定义
var r=50,svg的初始宽度为
var width=500然后在添加一个节点后,可以将宽度增加

d3.select("svg").
  attr("width", width + (2*r));
您还可以通过执行以下操作来获取节点的当前半径

d3.select("circle").attr("r");

并使用它来调整svg的宽度和高度。

您能分享您的代码吗?这里我从直径得到宽度和高度。我想,当我增加节点数时,大小应该增加。感谢您的回复,问题是宽度和高度增加,但直径仍然不变。我还想更新直径。例如,我当前的直径=500;对于30个节点,当我将节点数增加到40时。我将如何增加直径?更新节点数时,您可以将直径(因为您已全局声明)更新为您喜欢的任何值。但您还必须确保SVG的宽度和高度按照我上面所述进行更新。我正在更新直径,但不知道更新直径的确切方法。目前我正在计算节点数并将其乘以40,因此如果我有20个节点并将其乘以40(直径=40*20=800),个体的半径为91.547。现在如果将节点数增加到30(直径=40*30=1200),个体的半径为109.937。我想确定一个人的半径比,这对我来说是一个挑战。你可以试试这个:从你的小提琴上,我得到一个大约39px的半径,这是一个78的直径。因为你最大的一行有5个圆圈,我会用它作为参考。所以这一行需要5*78像素=390。svg的宽度为500,这为您提供了一个390/500=0.78的比率。所以当你添加一个新的节点,你想保持这个比例,现在你做6*78=468,宽度变成468/0.78=600。添加单个圆环后,将svg宽度和高度设置为600应保持圆环大小相同。我想这就是你想要做的。是的,你明白我的意思了。谢谢,你给我的解决方案是:当我声明我的svg width=500和height=500时。现在假设一开始我不知道节点的数量。我的json有5到100个任意数量的节点。那么我将如何设置初始svg宽度和高度。