我想使用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生成的节点从左到右依次排序?此外,就决策树而言,即使从左到右排序不同,这两棵树也完全相同?
答案 0 :(得分:3)
要解决此问题,您只需更改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网站有一个blog post about this problem,如果有机会你可以查看。
答案 1 :(得分:0)
请仅注意由于标题中的“从左到右”而点击此帖子的任何人。 @marapet有一个很好的答案to this post,注意外观顺序不能保留布局。如果发现左右布局是在图中的某个点建立的,然后被后续边缘打断,请尝试向后续边缘添加constraint=false
,以防止它们更改现有的l-r布局。