我正在思考Graphviz来渲染一些层次结构。到目前为止,子图的使用对于实现我正在寻找的东西来说是次优的。
这个是我想要的
(颜色代表层次结构中的不同层级,因此需要遵循此顺序)。为了制作这个图像,我使用了不可见的链接,但在现实世界的场景中,它确实不是一个选项。
使用此.dot文件
graph {
// Global config
rankdir=BT
node [style="filled" fontcolor="white" shape="box"]
// Rank (hierarchies)
{ rank=same; 258 }
{ rank=same; 259 }
{ rank=same; 260 }
{ rank=same; 261 262 }
// Nodes
// Tasks
258 [label="John Cleese" fillcolor="#E8B04D"]
// Project Goals
259 [label="Michael Palin" fillcolor="#C0C56B"]
// Identities
260 [label="Eric Idle" fillcolor="#FF8D61"]
// Virtues
261 [label="Graham Chapman" fillcolor="crimson"]
262 [label="Terry Jones" fillcolor="crimson"]
// Edges
259 -- 260 [style="bold" color="#3790af"]
}
Graphviz是否可以在边缘之前兑现等级?如果是这样,我将如何进行?
答案 0 :(得分:3)
通过添加一些隐形边缘可以轻松解决您的问题,这些边缘可以使各种等级(您正确设置)按您的需要工作。注意在底部附近简单地添加了三个不可见的边缘:
graph {
// Global config
rankdir=BT
node [style="filled" fontcolor="white" shape="box"]
// Rank (hierarchies)
{ rank=same; 258 }
{ rank=same; 259 }
{ rank=same; 260 }
{ rank=same; 261 bl 262 }
// Nodes
// Tasks
258 [label="John Cleese" fillcolor="#E8B04D"]
// Project Goals
259 [label="Michael Palin" fillcolor="#C0C56B"]
// Identities
260 [label="Eric Idle" fillcolor="#FF8D61"]
// Virtues
261 [label="Graham Chapman" fillcolor="crimson"]
262 [label="Terry Jones" fillcolor="crimson"]
// Edges
259 -- 260 [style="bold" color="#3790af"]
258--259 [style=invis]
260--261 [style=invis]
260--262 [style=invis]
260--bl [style=invis]
bl [style=invis label="" height=0, width=0]
}
我还在中心添加了一个不可见的平衡节点bl
,以帮助更好地使图表居中。