如何更改节点VisJ之间的边连接点

时间:2018-02-20 18:50:45

标签: javascript web pipeline vis.js vis.js-network

我试图在VisJs中编写可视化管道代码。所以我有一个图表和一些节点。节点可以生成/使用几种不同的数据类型。所以我需要这样的东西

------------------
|     Node1      |
------------------
int           char
 |             |
 |             |
 |             |
 |             |
int  string   char
------------------
|     Node2      |
------------------

因此,一个节点有多个锚点,只能连接到它自己的类型。我可以更改从绘制边缘的位置到节点中连接的位置吗?有没有人知道一个更好的JS库来做这个还是可以用VisJs来完成?

1 个答案:

答案 0 :(得分:0)

基本上,你不能像你描述的那样这样做:每个节点有一个点,其中所有边缘来自/到,节点形状悬停在它上面。

但是,您可以使用隐藏节点来模拟它:https://jsfiddle.net/tjyvLbns/20/

var gap = 20; // distance from the center of the node to the new "anchor"
var nodes = new vis.DataSet([
     {id:1,label:"node 1", x:0,  y:0}
    ,{id:2,label:"node 1 left", x:-gap,y:0, hidden:true}
    ,{id:3,label:"node 1 right",x:gap,y:0, hidden:true}

    ,{id:4,label:"node 2", x:0,  y:100}
    ,{id:5,label:"node 2 left", x:-gap,y:100, hidden:true}
    ,{id:6,label:"node 2 right",x:gap,y:100, hidden:true}
]);
var edges = new vis.DataSet([
     {from:2, to:5}
    ,{from:3, to:6}
]);

给出:

enter image description here

如果您想操纵这些节点(通过拖放操作移动),这不是一个好方法,但如果您只需要一个静态可视化,这应该可以正常工作。