点(graphviz)语言中节点标签中的换行符

时间:2012-05-31 20:55:37

标签: newline graphviz dot

有谁知道如何将换行符放在节点的标签上? \ n不起作用 - 而是出现一些新节点。

5 个答案:

答案 0 :(得分:46)

这对我有用as documented

digraph {
    n[label="two\nlines"]
    "on\nthree\nlines"
}

要么放入标签属性(我的偏好),要么将其用作节点的名称,但始终用双引号括起来。

答案 1 :(得分:7)

尝试" \\n"有效:dot.node('test', label="line1\\nline2")

答案 2 :(得分:3)

您可以使用\n字符

使用graphviz包,这将提供

from graphviz import Digraph
d=Digraph()
d.node('test',label='line 1\\nline 2')
print(d.source)

这会给出

digraph {
    test [label="line 1\nline 2"]
}

答案 3 :(得分:1)

this 中的

<BR/> 标记创建换行符。

digraph {
    n[label=<two<BR/>lines>]
}

当无法使用 \n 语法时,这会派上用场。最值得注意的是,LaTeX 的 HTML-like label 包在解析 \ 文件中的 .tex 时可能会出现问题,使用类似 HTML 的语法是一种解决方法。

答案 4 :(得分:0)

这个问题对我来说也很重要,因为我使用 graphviz 生成详细的 UML 图并且需要在标签中使用转义字符。但是,使用 Python 包时,我遇到了如何处理转义字符的错误,因此一些推荐的解决方案不起作用。

例如:

from graphviz import Digraph
d=Digraph()
d.node('test',label='line 1\\nline 2')
print(d.source)

生成以下内容(注意转义不起作用):

digraph {
    test [label="line 1\\nline 2"]
}

诸如使用单个反斜杠、rawstrings 之类的解决方法非常无效。但是,最终奏效的解决方法如下:

    s = graphviz.Source(d.source.replace('\\\\', '\\'))
    s.render('my_uml')

我不知道这个处理转义字符的错误是在 Python 绑定 (v0.12) 中还是在 graphviz 本身 (v2.44) 中,但由于其他人可能会遇到它,我想提供这个解决方案。

>