Graphviz:在节点上添加标题而不仅限于标签

70
在我的Graphviz图表(使用DOT编写)中,我希望每个节点都有一个标签,但除此之外,我希望某些节点有一个小标题,用于表示该节点的某些其他唯一值。例如,如果这是一个历史图表,一个节点的标签可能是“George Washington的出生”,而标题可能为“另请参阅:美国革命”。
这相当灵活,因此标题不一定需要在节点内部,但我需要另一种方法来插入文本,使其清楚地不是标签的一部分(例如,具有不同的大小,可能是不同的颜色),并且位于不同的位置但仍然清楚地是节点的一部分。
有没有办法做到这一点?
1个回答

114

要将标题放在节点外部,您可以使用xlabel

digraph g {
    forcelabels=true;
    a [label="Birth of George Washington", xlabel="See also: American Revolution"];
    b [label="Main label", xlabel="Additional caption"];
    a-> b;
}

forcelabels=true可以确保不会省略任何xlabel。

节点的xlabel示例


第二个选项是使用类似HTML的标签

digraph g {
    a[label=<Birth of George Washington<BR />        <FONT POINT-SIZE="10">See also: American Revolution</FONT>>];
}

HTML标签示例


我将把这个放在网页上,并在HTML中用图像映射覆盖它,以便节点可以被点击并重定向到URL。我发现用<和>来包含名称的第二种方法会导致图像映射为该元素创建一个标题,然后当您移动鼠标单击节点时,会出现一个带有原始HTML(如br标记)的文本框。但是,如果我加上引号,那么它会将字体标签等显示为节点名称的一部分,而不是像我想要的那样放置标题。有没有办法阻止创建该标题? - A. Duff
3
在旧版Linux机器上仍安装有Graphviz 2.28,该版本后才实现了xlabels。因此,如果您在使用过程中遇到问题,首先要检查的一件事就是这个。 - demented hedgehog
A.Duff说:我将在网页上放置这个,并在HTML中叠加一个图像映射,以便节点可以被点击并重定向到URL。我的注释:我创建了一个SVG输出格式的图像。我可以使用SVG图像作为网页,并在其上设置可点击的节点,以下载软件版本和单击链接以获取发布版本之间添加的功能的票证。SVG似乎是唯一直接包含由graphviz本身嵌入图像中的URL链接的图像格式。 - Ivan
有没有办法将附加标题作为标注添加,就像这样:https://www.pinclipart.com/pindetail/iRmwob_callouts-clip-art-clipart-callout-clip-art-call/? - laike9m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接