Javascript d3.js中的图形方向和节点定位
由于这一点,我在Javascript d3.js中的图形方向和节点定位,javascript,svg,graph,d3.js,force-layout,Javascript,Svg,Graph,D3.js,Force Layout,由于这一点,我在d3.js中使用force布局生成了一个静态固定布局图,如下所示: 我有两个具体问题需要进一步定制布局: 首先,我注意到,以确定方式初始化节点位置(例如,此处以对角线方式初始化,有关详细信息,请参见)会固定节点的位置,并且节点的方向似乎取决于此初始化以及力图的尺寸*。我想知道如何使上图中的节点A、D、E、F、I水平对齐?换句话说,我想逆时针旋转图形的方向大约45度。我已尝试在中间水平初始化节点: nodes.forEach(function(d, i) { d.x = w /
d3.js
中使用force布局生成了一个静态固定布局图,如下所示:
我有两个具体问题需要进一步定制布局:
首先,我注意到,以确定方式初始化节点位置(例如,此处以对角线方式初始化,有关详细信息,请参见)会固定节点的位置,并且节点的方向似乎取决于此初始化以及力图的尺寸*。我想知道如何使上图中的节点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
并沿对角线确定初始化节点时,所有节点和边都沿该对角线定位在输出中,为什么?)尝试在每个刻度上添加一个自定义重力,将节点拉向水平线。大概是这样的:
force.on('tick', function(e) {
nodes.forEach(function(d) {
d.y += (height/2 - d.y) * e.alpha;
});
})
对于你的第二个问题,我相信,它不是居中的,但是默认情况下,有一个小的重力将节点拉向中心