【发布时间】:2011-01-01 23:49:51
【问题描述】:
在GraphViz 的DOT 语言中,我试图表示一个依赖关系图。我需要能够在容器内拥有节点,并且能够使节点和/或容器依赖于其他节点和/或容器。
我使用subgraph 来代表我的容器。节点链接工作得很好,但我不知道如何连接子图。
鉴于下面的程序,我需要能够用箭头连接 cluster_1 和 cluster_2,但我尝试过的任何操作都会创建新节点而不是连接集群:
digraph G {
graph [fontsize=10 fontname="Verdana"];
node [shape=record fontsize=10 fontname="Verdana"];
subgraph cluster_0 {
node [style=filled];
"Item 1" "Item 2";
label = "Container A";
color=blue;
}
subgraph cluster_1 {
node [style=filled];
"Item 3" "Item 4";
label = "Container B";
color=blue;
}
subgraph cluster_2 {
node [style=filled];
"Item 5" "Item 6";
label = "Container C";
color=blue;
}
// Renders fine
"Item 1" -> "Item 2";
"Item 2" -> "Item 3";
// Both of these create new nodes
cluster_1 -> cluster_2;
"Container A" -> "Container C";
}
【问题讨论】:
-
我遇到了同样的问题,但是他们有一个自然的例子,子图就像节点一样,graphviz.org/content/fdpclust。
-
@nlucaroni 我想知道这个问题是否解决了。这个例子给了我错误的图:边连接子图的中心。你不知道如何让它像示例中一样工作吗?
-
@k102,我知道。再次查看该页面;它说你需要使用
fdp。链接的示例和上面的示例都有效(此处示例中的最后一行需要使用子图名称而不是标签,并且包含图的线长可能会很好);它有点紧)。 -
@nlucaroni 使用
fdpv2.28.0 并复制/粘贴示例中的源代码,这些线连接到子图的中心,而不是边缘。如果您在 OmniGraffle 中打开 .dot,它们会正确连接,而neato和dot都会为集群创建多余的节点。
标签: graphics graphviz dot directed-graph subgraph