我想为graphViz中的节点分配多种颜色。最佳解决方案是圆形节点,饼图格式。
我知道一种方法是使用HTML标记。以下是一个简单的例子:
graph G{
1--2;
1[shape=none,margin=0,label=<
<table BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<tr>
<td bgcolor="red"></td>
<td bgcolor="blue"></td>
</tr>
</table> >];
2[shape=circle,style=filled,fillcolor=yellow];
3[shape=circle,style=filled,fillcolor=yellow];
}
然而,存在一些问题:
节点1没有标签(我希望它有标签“1”)
连接节点1到节点2的边缘没有完全连接到节点1.换句话说,节点1和连接节点2的边缘之间有一个空格。
节点1是矩形的。我怎么能有一个圆形节点?
如果无法克服这些问题,请您推荐其他图形可视化软件吗?
答案 0 :(得分:3)
您可以通过
实现这一目标graph G{
1--2;
1[shape=circle,style=wedged,fillcolor="red:blue"];
2[shape=circle,style=filled,fillcolor=yellow];
3[shape=circle,style=filled,fillcolor=yellow];
}
该方法的优点是您可以在节点中使用2种以上的颜色。
答案 1 :(得分:0)
对于您的第一个问题,它实际上取决于您对双色节点的实现。您有这篇文章中描述的多个解决方案:Two colours in one node with graphviz's dot?使用您当前的代码,添加标签的最简单方法是将其写入<td></td>
标记内,如下面的代码所示:
graph G{
1--2;
1[shape=none,margin=0,label=<
<table BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<tr>
<td bgcolor="red">1</td>
<td bgcolor="blue"></td>
</tr>
</table> >];
2[shape=circle,style=filled,fillcolor=yellow];
3[shape=circle,style=filled,fillcolor=yellow];
}
但是,它不会居中,我认为渐变节点是可取的。
对于第二个问题,您需要在数组的单元格上声明一个端口,并在绘制边缘时使用它们来锚定边缘:
graph G{
1[shape=none, label=<
<table MARGIN="0" BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<tr>
<td bgcolor="red" port="L">1</td>
<td bgcolor="blue" port="R"></td>
</tr>
</table> >];
2[shape=circle,style=filled,fillcolor=yellow];
3[shape=circle,style=filled,fillcolor=yellow];
1:L--2;
}
对于您的第3个问题,根据http://www.graphviz.org/doc/info/shapes.html,您可以创建自定义形状。我不知道有什么方法可以创建这样的圆形数组,所以你应该朝这个方向看。我想。