警告:cmd -> barbar:head 不在 head 簇内 cluster_0

Warning: cmd -> barbar: head not inside head cluster cluster_0

我知道在 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

的警告

我该如何解决这个问题?

你非常接近。您需要进行的更改很简单。只需将最后一条语句分成两部分即可:

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 的特点之一。上面的语法不会产生警告。希望这对你有帮助:)