使用graphviz的dot功能,如何在一个节点中使用两种颜色?

7
我想知道是否可以将节点分成两种不同的颜色。我正在使用graphviz的dot(http://www.graphviz.org/)。也许一条竖线或者对角线可以将节点分成两种颜色。我想这样做是因为我有很多节点属于两个不同的类别(颜色),而有些节点属于两个类别(颜色)都有。谢谢。James
3个回答

15

渐变功能是在2012年1月26日才被添加到Graphviz中的;在新的2.30.0稳定版本发布之前,您需要下载Graphviz 2.29.20120127.0545或更新的开发版本。

此外,目前似乎只有Cairo/Pango渲染器实现了渐变;在我的测试中,Quartz(Mac)和GD渲染器会回退到使用第一个颜色。特别是,这意味着如果您正在Mac上使用Graphviz.app GUI查看器,则不会看到渐变效果(但还未支持)。

digraph G {
  Gradient [style="filled", fillcolor="orange:yellow"]
}

在此输入图像描述


谢谢(可能有点晚了!)现在我已经更新了我的Graphviz,我会看一下这个的 :) - James
对我来说不起作用。我在Mac OS上尝试了v2.40.1和一个基于Web的Graphviz工具。 - shiouming

7

我认为没有一个现成的解决方案可以有两种背景颜色。

最好的解决方案是使用渐变填充(fillcolor="orange:yellow") - 但尽管这在文档中有说明,但我无法在我的盒子上使其工作。

您可以使用类似HTML标签作为解决方法。根据您的需求,您可能需要拆分标签以使其居中:

a[shape="none", label=<
<table cellpadding="0" cellborder="0" cellspacing="0" border="0">
<tr>
<td bgcolor="orange">abc</td>
<td bgcolor="yellow">def</td>
</tr>
</table>
>]

2 colors


感谢您的快速回复。渐变听起来很完美,但像您一样,我也无法使其正常工作。HTML标签很好用,谢谢。我会等待看看是否有人知道渐变是否正常工作。 - James

1

如果您使用标签的image属性并提供适当的背景图像,则可以实现此功能:

digraph G {
  i1 [shape=none, image="range.png", label=""];
  i2 [shape=none, image="range.png", label="Image w label", imagescale=true];
  i1 -> i2;
}

这将产生以下输出:

enter image description here

使用range.png文件

enter image description here


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