我理解在graphviz中,如果我将compound
设置为true
我能够将一个组件与子图连接而不是它的第一个元素。
我的代码是:
compound=true;
cmd[shape=component,label="foo"];
barbar[label="bar"];
msg[label="msg"];
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
msg;
label = "Instance.alertInstanceBingoChange()";
}
cmd->barbar->msg[lhead=cluster_0];
所以你可以看到它提供了我想要的确切结果,除了警告barbar: head not inside head cluster cluster_0
我该如何解决这个问题?
答案 0 :(得分:1)
你非常接近。您需要做出的改变很简单。只需将最后一个语句分成两个:
digraph test {
compound=true;
cmd[shape=component,label="foo"];
barbar[label="bar"];
msg[label="msg"];
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
msg;
label = "Instance.alertInstanceBingoChange()";
}
cmd->barbar;
barbar->msg[lhead=cluster_0];
}
现在,我不知道为什么这会产生差异,但这只是DOT的一个特点。上面的语法不会产生警告。希望这可以帮助你:)