vis.js 固定长度边

4

有没有可能给边缘设定一个固定的长度?即使我设置了单个边缘的长度,物理引擎也会改变它。

我正在尝试将3个簇聚合到一起,每个簇都有几百个节点。有一种选项可以将簇聚合成几个节点。我想用真正短的边缘连接这些聚合节点,并给这些节点高质量,以便它们将像拥有数百个节点时所做的那样排斥其他簇。

2个回答

6
这个问题的答案似乎是肯定的!visjs.org的网络/边缘文档描述了一个“长度”选项:

"物理模拟给边缘一个弹簧长度。这个值可以覆盖静止时弹簧的长度。"

因此,当您设置边缘时,您可能会像这样做一些额外的长边:
myEdges.push({from:'nodeid1', to:'nodeid2', length:300});

默认长度大约是95,所以长度为300将是正常长度的三倍左右。

如果您想更改默认边缘长度(不包括您在边缘上明确设置的任何长度),则这是网络的“springLength”,因此在创建网络时传递一个选项:

var network = new vis.Network(container, data,
  {"physics": {"barnesHut": {"springLength":100, "springConstant": 0.04}}}
);

物理引擎可能会限制一些事情,并且有点掩盖你想要看到的变化,因此您可能还需要调整诸如“springConstant”之类的东西。


这对于来自同一节点的边不起作用。有什么想法吗? - user1912404

0

你觉得如果我深入代码,让物理引擎不改变边缘的长度,这是可能的吗? - Burak Cetin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接