Graphviz的headport与tailport功能失效,node.js库addEdge如何指定节点端口?
问题原因
你当前的写法存在两个问题:
- 边的
headport和tailport属性取值写反:边的尾部(tail)对应源节点struct1,所以tailport需要设置为struct1的端口port1;边的头部(head)对应目标节点struct2,所以headport需要设置为struct2的端口port2,端口赋值错误导致属性不生效。 - 如果你想生成
节点名:端口格式的标准DOT连接语法,不需要通过边属性配置,直接在添加边时传入带端口的节点标识即可。
解决方案
方案1:修正端口属性赋值
仅调整addEdge的属性参数即可:
// 把原来的addEdge行替换为下面的代码 g.addEdge(n1,n2,{"tailport":"port1","headport":"port2"});
该写法生成的DOT语句会携带headport、tailport边属性,渲染后可连接到对应端口。
方案2:直接使用带端口的节点引用(更推荐)
和你已知的正确DOT语法完全对齐,不需要额外配置端口属性:
// 把原来的addEdge行替换为下面的代码 g.addEdge("struct1:port1", "struct2:port2"); // 如果需要给边加其他属性,比如label,在第三个参数传入即可 // g.addEdge("struct1:port1", "struct2:port2", {"label":"xyz"});
该写法生成的DOT语句就是"struct1:port1" -> "struct2:port2"格式,渲染效果完全符合预期。
内容的提问来源于stack exchange,提问作者Srinath M P
相关产品推荐
相关产品推荐

