【问题标题】:D3 Force Layout: Fit everything on a page?D3 强制布局:适合页面上的所有内容?
【发布时间】:2013-06-16 11:13:05
【问题描述】:

编辑:不确定如何将 pack 与 force 结合起来,但这可能是一个解决方案

我昨天开始处理 D3 可视化,但无法让所有内容都适合屏幕。

有时事情会脱离屏幕,有时半圈在屏幕上,一半在屏幕外。

这是一个可以查看可视化的链接

http://codepen.io/anon/full/unkFc

这是实际代码

http://codepen.io/anon/pen/unkFc

我认为问题可能是我使用窗口大小作为维度,但可视化可能没有显示在整个窗口中?

请注意,我有 codepen,因为我需要它在 IE8 中工作,而 JSFiddle 不支持它

【问题讨论】:

    标签: javascript d3.js resize visualization force-layout


    【解决方案1】:

    我认为问题在于空间的元素太多。如果它们要适合屏幕,它们就会重叠。

    您可以使用 force.gravity() 和 force.size() 来尝试找到完美的平衡。请参阅:http://tributary.io/inlet/5817500(与第 73 和 74 行混淆)

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

    类似

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

    【讨论】:

    • 我在想也许尝试使用 d3.layout.pack()?我不确定强制是否会起作用,因为我的可视化可能有很多对象。但是是的,比例因子是我正在考虑的一个想法
    • 另见stackoverflow.com/a/9577224/2134824。我认为 d3.layout.pack 可能会更好,它只是不那么有趣,因为你不能拖着东西到处乱扔:)
    • 谢谢,我会试试帖子中提到的内容。你知道我会如何使用包吗?包模板不同,所以我不确定它在这里如何应用
    猜你喜欢
    • 2013-06-29
    • 2012-11-18
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2014-05-17
    • 2017-09-23
    • 2013-01-22
    • 2018-09-20
    相关资源
    最近更新 更多