强制graphviz中节点的从左到右顺序?
Posted
技术标签:
【中文标题】强制graphviz中节点的从左到右顺序?【英文标题】:Force the left to right order of nodes in graphviz? 【发布时间】:2015-07-04 01:48:30 【问题描述】:我想使用 graphviz 绘制决策树图。
我要画的图是这样的:
我正在使用以下点语言:
graph a
A [shape=box; label="A"]
B [shape=box; label="B"]
al [shape=none; label="0"]
bl [shape=none; label="1"]
br [shape=none; label="0"]
A -- al [label="0"];
A -- B [label="1"];
B -- bl [label="0"];
B -- br [label="1"];
但是我的结果图是这样的:
如何强制graphviz生成的节点从左到右顺序?此外,就决策树而言,即使从左到右的顺序不同,这两棵树是否完全相同?
【问题讨论】:
你使用什么语言? @TimBiegeleisen 嗨,蒂姆,我只是在手动编写 .gv 文件。 【参考方案1】:要解决此问题,您只需更改 B
和 al
节点的顺序:
graph a
A [shape=box; label="A"]
al [shape=none; label="0"]
B [shape=box; label="B"]
bl [shape=none; label="1"]
br [shape=none; label="0"]
A -- al [label="0"];
A -- B [label="1"];
B -- bl [label="0"];
B -- br [label="1"];
顺便说一下,graphviz 网站上有一个forum post about this problem,如果有机会可以看看。
【讨论】:
【参考方案2】:请注意因为标题中的“从左到右”而点击此帖子的任何人。 @marapet 有一个很好的答案 to this post 指出外观顺序不会保留布局。如果您发现在图表中的某个点建立了左右布局,然后被后续边打破,请尝试在后续边中添加constraint=false
,以防止它们改变现有的左右布局。
【讨论】:
以上是关于强制graphviz中节点的从左到右顺序?的主要内容,如果未能解决你的问题,请参考以下文章
python 用于2D阵列的从左到右从上到下遍历的指数生成器