如何在Graphviz中从节点直接连线到集群中心?
Graphviz:无需隐藏节点实现指向集群中心的边
你可以通过以下方式实现,核心是利用Graphviz的compound属性直接让边指向集群,无需额外隐藏节点:
修正后的代码
compound=true // 开启跨集群边的支持 node[shape=rectangle] subgraph cluster1 { label="a_very_long_label" // 正确设置集群标签,避免被解析为节点 b c d } // 直接让节点p指向集群cluster1,lhead指定箭头落在集群上 p -> cluster1 [lhead=cluster1] }
关键说明
compound=true:必须开启这个属性,才能让边连接到集群(子图)而非仅节点。label="a_very_long_label":将原代码中的a_very_long_label改为集群的label属性,否则会被识别为普通节点,导致集群结构异常。p -> cluster1 [lhead=cluster1]:这条边会自动将箭头定位到集群的中心位置,Graphviz会负责计算集群的边界中心,无需手动添加隐藏节点辅助定位。
如果需要更精准控制箭头的端口位置,可以在边的属性中添加headport,比如指定headport=c(强制箭头指向中心),不过默认情况下Graphviz已经会将箭头指向集群的中心区域。
内容的提问来源于stack exchange,提问作者user304539
相关产品推荐
相关产品推荐

