2

我想为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 和节点 2 的边不完全连接到节点 1。换句话说,节点 1 和连接节点 2 的边之间存在空间。

  3. 节点 1 是矩形的。我怎样才能有一个圆形节点?

如果没有办法克服这些问题,请您推荐其他图形可视化软件吗?

4

2 回答 2

4

你可以通过

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 种颜色。

于 2015-12-09T18:20:31.610 回答
0

对于您的第一个问题,这实际上取决于您对双色节点的实现。您在这篇文章中描述了多种解决方案:一个节点中有两种颜色,带有graphviz的点?使用您当前的代码,添加标签的最简单方法是将其写入<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;
}

对于您的第三个问题,根据http://www.graphviz.org/doc/info/shapes.html,您可以创建自定义形状。我不知道有什么方法可以创建这样的圆角数组,所以我认为你应该朝这个方向看。

于 2013-07-15T12:58:56.420 回答