graphviz 没有换行符(.dot)

graphviz no line break (.dot)

我正在 LinuxArch 上使用 graphviz。如果我打印我的 .svg,我使用命令 dot -Tsvg example.dot -o exampale.svg。我的图表已打印,效果很好。我阅读了有关该主题的其他一些问题 Link 1, Link 2, also the documentation on graphviz.org 没有给我任何线索。

问题:我想在一个节点中换行。我该怎么做?

以下代码有效,但并非总是有效。完整代码:

digraph G {
    //general settings
    graph [fontname="Arial"];
    node [fontname="Arial"];
    edge [fontname="Arial"];

    //data of graph
    subgraph cluster_1
    {
        label = "Cluster 1";
        style=filled;
        color="#E0E0E0";
        margin=20;
        node [style=filled,color=white];
        "I'm text" -> "I want a donat.";
        "I want a donat." -> a1[label="Love food,\nlove it so much!"];
    }

    subgraph cluster_2
    {
        label = "Cluster 2";
        style=filled;
        color="#E0E0E0";
        margin=20;
        node [style=filled,color=white];
        Start -> a2[label="sit amet,\nconsetetur"];
        a2 ->
        {
            b2[label="Lorem Impsum\ndollar sit amet."];
        }
    }
}

结果:(绿色标记有效,问题是红色标记。)

在我看来,您混淆了节点和边声明。

尝试更改行

    "I'm text" -> "I want a donat.";
    "I want a donat." -> a1[label="Love food,\nlove it so much!"];

进入

    a1[label="Love food,\nlove it so much!"];
    "I'm text" -> "I want a donat.";
    "I want a donat." -> a1;

这实际上是将a1定义为带有标签的节点。然后可以使用节点 ID a1 来声明节点之间的边。

这是另一个例子,所有节点都有明确的节点声明,然后是使用节点标识符的边声明:

    imtext[label="I'm text"];
    donat[label="I want a donat."];
    a1[label="Love food,\nlove it so much!"];

    imtext -> donat -> a1;