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

问题描述 投票:0回答:5

有谁知道如何在节点的标签中添加换行符? 不起作用 - 相反,出现了一些新节点。

newline graphviz dot
5个回答
74
投票

这对我有用如记录

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

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


11
投票

尝试有效的“

\\n
”:
dot.node('test', label="line1\\nline2")


7
投票

您可以使用

\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"]
}

6
投票

类似 HTML 的标签

中的
<BR/>标签会创建换行符。

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

当无法使用

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


2
投票

这个问题对我来说也很重要,因为我正在使用 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"]
}

诸如使用单个反斜杠、原始字符串之类的解决方法是极其无效的。然而,最终起作用的解决方法如下:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.