Graphviz是这种图形的最佳工具吗?

Graphviz是这种图形的最佳工具吗?,graph,graphviz,graph-visualization,Graph,Graphviz,Graph Visualization,我想创建一个如下所示的图形。。。但这太复杂了。我想为每个方形节点使用单独的图像,为每个圆形节点使用相同的图像 我想知道使用GraphViz是最好的选择还是有其他选择 另外,我想知道我是否可以在GraphViz中为圆形节点创建一个模板节点并重用它?我不想一次又一次地指定图像、形状等属性 Graphviz绝对适合您的要求。graphviz.org的主要网站似乎暂时关闭了,但有人已经将图库示例(带有源代码)镜像到了Flickr 据我所知,您无法创建“模板”,但您可以对圆圈执行类似操作: node[s

我想创建一个如下所示的图形。。。但这太复杂了。我想为每个方形节点使用单独的图像,为每个圆形节点使用相同的图像

我想知道使用GraphViz是最好的选择还是有其他选择

另外,我想知道我是否可以在GraphViz中为圆形节点创建一个模板节点并重用它?我不想一次又一次地指定图像、形状等属性


Graphviz绝对适合您的要求。graphviz.org的主要网站似乎暂时关闭了,但有人已经将图库示例(带有源代码)镜像到了Flickr

据我所知,您无法创建“模板”,但您可以对圆圈执行类似操作:

node[shape=circle, color=white, style=solid];
node1;node2;node3;
这将定义一个节点(在逐行计算文件时将其视为“状态”),然后您可以在切换到矩形之前在该“状态”中定义圆节点

根据您的平台,您还可以导入.dot文件并对其进行微调以供发布。还有大量用于格式的生成器和转换器


请注意,如果您正在Mac OS X 10.7“Lion”上工作,我还无法找到或构建Graphviz的工作版本。在这种情况下,我会说它还不适合您的需要。

当然,这是在您的问题中绘制图形的代码(下面用点表示)


  • 第一行有向图用于有向图(用于 其中边有一个方向)

  • 第四个和第五个位于边和边的“设置默认属性”上方 节点。换句话说,一旦你做到了这一点,你只需要 需要设置(包括属性+值)节点(或边)的样式 您希望样式与默认值不同。你可以 通过创建子图或离散图来创建多个节点“模板” 对节点进行分组(请参见dot手册)

  • rank=same允许您指定具有相同属性的一组节点 垂直位置(前提是rankdir设置为TB,这意味着 “自上而下”)

  • 默认情况下,节点名称(例如,我的图形中的a、b、c)用作 节点的标签。如果不希望在渲染的图形中显示此内容, 只需设置label=“”

  • digraph g {
    rankdir = TB;
    bgcolor = white;
    
    edge[arrowsize=.7, color=black];
    node[shape=box, color=black]
    
    {rank=same; a, b, c};
    {rank=same; d, e, f};
    {rank=same; g, h};
    {rank=same; i, j, k};
    
    d[color=blue; shape=circle];
    e[color=blue; shape=circle];
    k[color=blue; shape=circle];
    
    a -> d;
    b -> d;
    b -> e;
    c -> e;
    d -> g;
    e -> h;
    d -> i;
    d -> j;
    j -> k;
    h -> k;
    k -> f;
    }