graphviz - 如何动态增加 GraphViz 中两个节点之间的距离?
问题描述
我正在使用这个 Python 项目“Family Tree Maker”来生成家谱。它适用于 GraphViz,创建一个漂亮的 DOT 文件,然后是一个 PNG。“最小可行产品”检查。它有效:D
现在我想让它变得更好一点。
有没有一种简单的方法(例如不必增加每只手的边缘长度)来强制最右边的垂直边缘(Father1-Mother2 和 Franz 之间)是直的/垂直的,如下所示?
谢谢!
编辑:正如@albert 在评论中正确指出的那样,webgraphviz.com 显示正确的输出,而 viz-js.com 没有。
PS:这是生成此图的 DOT 代码:
digraph {
graph [splines=ortho];
node [shape=box, fontname = "calibri"];
edge [dir=none];
Father1[label="Father1",style=filled,fillcolor=azure2];
Mother1[label="Mother1",style=filled,fillcolor=bisque];
Child1[label="Child 1",style=filled,fillcolor=azure2];
Child2[label="Child 2",style=filled,fillcolor=bisque];
Child3[label="Child 3",style=filled,fillcolor=azure2];
Child4[label="Child 4",style=filled,fillcolor=azure2];
Mother2[label="Mother2",style=filled,fillcolor=bisque];
Franz[label="Franz",style=filled,fillcolor=azure2];
{ rank=same;
Mother1 -> h0 -> Father1;
h0[shape=circle,label="",height=0.01,width=0.01];
Father1 -> h1 -> Mother2;
h1[shape=circle,label="",height=0.01,width=0.01];
}
{ rank=same;
h0_0 -> h0_1 -> h0_2 -> h0_3 -> h0_4;
h0_0[shape=circle,label="",height=0.01,width=0.01];
h0_1[shape=circle,label="",height=0.01,width=0.01];
h0_2[shape=circle,label="",height=0.01,width=0.01];
h0_3[shape=circle,label="",height=0.01,width=0.01];
h0_4[shape=circle,label="",height=0.01,width=0.01];
h0_4 -> h1_0 [style=invis];
h1_0;
h1_0[shape=circle,label="",height=0.01,width=0.01];
}
h0 -> h0_2;
h0_0 -> Child1;
h0_1 -> Child2;
h0_3 -> Child3;
h0_4 -> Child4;
h1 -> h1_0;
h1_0 -> Franz;
{ rank=same;
Child1 -> Child2 [style=invis];
Child2 -> Child3 [style=invis];
Child3 -> Child4 [style=invis];
Child4 -> Franz [style=invis];
}
{ rank=same;
}
}
解决方案
正如在评论中与@Albert 讨论后所预期的那样,使用 GraphViz 的 2.28 版,我得到了我想要的结果。
我在 GraphViz 的 Gitlab 上创建了一份问题报告:https ://gitlab.com/graphviz/graphviz/issues/1627
推荐阅读
- python - 自从我的 Try...Ext 无法正常工作后,我应该怎么做?
- python - 如何以 ddmmyyyy 格式将日期解释为 3 12 而不是 31 2
- r - R:了解两个图之间的差异
- ffmpeg - FFMPEG:如何将元数据从视频文件复制到 AVI 视频文件?
- nsis - Files for both applications are installed in both destination folders
- swift - ARKit - 使用纬度和经度放置对象
- python - 在数据集中的多个日期上求解相同的优化函数
- css - Vuetify v-data-table 弹出选中的行
- amazon-web-services - EKS ALB 无法自动发现子网
- ios - WebView 不能在 iOS 中使用颤振但在 Android 中工作