【问题标题】:Dynamic Link Distance in D3 force layoutD3 力布局中的动态链接距离
【发布时间】:2013-08-30 06:54:07
【问题描述】:

我已经实现了 d3 的力布局。然而对我来说,问题是布局没有在屏幕上传播。以下是截图:

我希望节点以动态链接距离分布在屏幕上,因为右侧和左侧有很多空白区域。我尝试将链接距离随机化如下:

d3.layout.force()
    .charge(-800)
    .linkDistance(function(d){
        return (Math.random() * (400 - 200) + 1);
    })
    .size([w, h]);

这增加了链接距离,但也增加了垂直方向。我尝试设置 linkStrength() 属性,但它对我不起作用。如何使此布局仅在水平方向上分布在整个区域?有没有一种方法可以定义链接距离以适合我页面的矩形区域?

【问题讨论】:

    标签: javascript d3.js force-layout


    【解决方案1】:

    我看到的一个解决方案是使用this bounding box example 以矩形/水平方式绑定您的绘图,然后将电荷设置为非常高的水平(目标为 -10000,类似这样),以便节点分布在它们的在被您设置的界限停止之前的最大值。然后,您可以选择将文本设置在节点的右侧或左侧,具体取决于其位置,这样它就不会被剪切。或者你也可以绑定文本。

    【讨论】:

    • 哦,顺便说一句,和弦图可以完美地拟合您的数据,因此您也可以研究一下(更多信息here
    • 当我像在bounding box example 中那样绑定绘图并将费用设置为非常高的值时,节点会跨边界对齐,在这种情况下,如果节点的数量非常多图表可能不可读。有什么方法可以在布局基于某些条件运行时为每个节点分配特定的 x 和 y 位置以使其占据整个区域?
    猜你喜欢
    • 2013-05-10
    • 2013-05-04
    • 2012-10-11
    • 2015-07-21
    • 1970-01-01
    • 2016-11-10
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多