6

由于这个较早的问题,我使用强制布局生成了一个静态固定布局图,如下所示d3.js

在此处输入图像描述

我有两个具体问题需要进一步定制布局:

首先,我注意到确定性地初始化节点位置(例如,在此处对角线完成,有关详细信息,请参阅脚本)固定节点的位置,并且节点的方向似乎取决于此初始化以及力图的尺寸* . 我想知道如何使A, D, E, F, I上图中的节点水平对齐?换句话说,我想将图形的方向逆时针旋转大约 45 度。我试图在中间水平初始化节点:

nodes.forEach(function(d, i) { d.x = w / size * i; d.y = h / 2; });

但是生成的输出在它们初始化的位置具有水平的所有节点和边缘。

svg其次,力图在元素内自动居中是真的吗?如果不是,我们怎样才能做到这一点?如果是,我们如何为svg元素内的力图指定一个中心?

(* 注意:奇怪的是,当设置力图的.size([w, h])位置w = h并确定性地沿对角线初始化节点时,所有节点和边都沿输出中的对角线定位,为什么?)

4

1 回答 1

2

尝试在每个刻度上添加一个自定义重力,将节点拉向水平线。像这样的东西:

force.on('tick', function(e) {
  nodes.forEach(function(d) {
    d.y += (height/2 - d.y) * e.alpha;
  });
})

对于你的第二个问题,我相信它不是居中的,但默认情况下会有一个小的重力将节点拉向中心。

于 2014-01-17T13:59:36.547 回答