如何让Graphviz中多条边连接到节点的同一指定位置?
搞定Graphviz节点边统一连到下方中心的问题
直接可用的全局配置方案
不用挨个修改节点和边,靠全局属性就能实现统一样式,下面分两种节点形状给出代码:
纯文本(plaintext)节点版本
# 全局节点配置:用record结构内置下方中心端口 node [ shape=plaintext, label="{<down> | <label>}" # <down>对应下方中心端口,<label>放置节点文字 ] # 全局边配置:所有边默认连接到节点的down端口 edge [ headport=down, tailport=down ] A[label=<A>] B[label=<B>] C[label=<C>] A -- B A -- C }
矩形(box)节点版本
如果是box形状节点,只需添加隐藏端口标记的属性即可:
node [ shape=box, port_label_distance=0, # 隐藏端口标记,不影响节点外观 label="{<down> | <label>}" ] edge [ headport=down, tailport=down ] A[label=<A>] B[label=<B>] C[label=<C>] A -- B A -- C }
原理说明
- 借助Graphviz的record形状语法,给每个节点定义了
<down>端口,该端口恰好对应节点的下方中心位置,<label>用来承载原本的节点文本,视觉上和原生plaintext/box节点无差异。 - 通过全局边属性
headport和tailport,指定所有边的首尾都连接到对应节点的<down>端口,一次性完成所有节点的边连接规则配置,无需逐个设置。
内容的提问来源于stack exchange,提问作者bad_coder
相关产品推荐
相关产品推荐

