Javascript D3强制布局:将所有内容都放在一页上?

Javascript D3强制布局:将所有内容都放在一页上?,javascript,d3.js,resize,visualization,force-layout,Javascript,D3.js,Resize,Visualization,Force Layout,编辑:不确定如何将打包与强制相结合,但这可能是一个解决方案 我昨天开始做D3可视化,我很难把所有东西都放在屏幕上 有时事情会从屏幕上消失,有时半个圆圈在屏幕上,另一半在屏幕下 这里有一个链接,您可以在其中查看可视化 这是实际的代码 我认为问题可能是我使用窗口大小来表示尺寸,但可能可视化效果没有显示在整个窗口中 请注意,我使用codepen是因为我需要它在IE8中工作,而JSFIDLE不支持它我认为问题在于空间中的元素太多了。如果它们适合在屏幕上显示,它们将重叠 你可以用force.gravi

编辑:不确定如何将打包与强制相结合,但这可能是一个解决方案

我昨天开始做D3可视化,我很难把所有东西都放在屏幕上

有时事情会从屏幕上消失,有时半个圆圈在屏幕上,另一半在屏幕下

这里有一个链接,您可以在其中查看可视化

这是实际的代码

我认为问题可能是我使用窗口大小来表示尺寸,但可能可视化效果没有显示在整个窗口中


请注意,我使用codepen是因为我需要它在IE8中工作,而JSFIDLE不支持它

我认为问题在于空间中的元素太多了。如果它们适合在屏幕上显示,它们将重叠

你可以用force.gravity()和force.size()来找到完美的平衡。参见:(与第73行和第74行混淆)

您还可以通过圆的数量和窗口的大小来缩放圆的大小,这样无论这两个参数如何,布局的空间都是相同的

差不多

.attr("r", function(d) { 
    return d.count/nodes.length * Math.min([width,height])/someScaleFactor;
})

我在考虑可能尝试使用d3.layout.pack()?我不确定力是否会起作用,因为我的可视化可能有很多对象。但是是的,比例因子是我考虑过的一个想法,我也看到了。我认为d3.layout.pack可能会更好,只是没那么有趣,因为你不用把东西拖来拖去扔去:)谢谢,我会试试帖子里提到的内容。你知道我会怎么用这个包吗?包模板是不同的,所以我不确定它在这里是如何应用的