Graphviz家谱树节点e/d的边居中问题及splines参数疑问
解决Graphviz家谱树边不居中的问题
首先明确:splines=false/true只控制边是直线(折线)还是曲线样式,不能解决边居中的问题,别在这个参数上耗时间。
下面是几个实用的解决方法:
让目标节点处于同一层级
用rank=same把d和e放在同一水平/垂直层,父节点到它们的边会自动对齐居中。示例代码:digraph FamilyTree { rankdir=TB; // 从上到下的家谱布局 a -> d; a -> e; // 强制d和e在同一层级 subgraph { rank=same; d; e; } }统一节点尺寸
如果d和e的节点大小不一致,会导致边偏移。可以统一设置所有节点的尺寸,或者单独给这两个节点指定相同的宽高:digraph FamilyTree { // 统一节点样式和尺寸,避免大小差异导致边偏移 node [shape=box, width=1.2, height=0.8, margin=0.1]; a -> d; a -> e; }调整节点间距
用nodesep参数控制同一层级节点的间距,让间距均匀,避免边因间距不均出现偏移:digraph FamilyTree { rankdir=TB; nodesep=0.6; // 同一层节点之间的间距,按需调整 a -> d; a -> e; subgraph { rank=same; d; e; } }
内容的提问来源于stack exchange,提问作者Hemant Bhargava
相关产品推荐
相关产品推荐

