Graphviz是此类图表的最佳工具吗?

Ris*_*abh 7 graph graphviz graph-visualization

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

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

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

示例图

dou*_*oug 12

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

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;
}
Run Code Online (Sandbox Code Playgroud)


  1. 第一行有向图用于有向图(对于边缘具有方向的图).

  2. 第四个和第五个分别位于边和节点的设置默认属性之上.换句话说,一旦你完成了这个,你只需要设置样式(包括属性+值)节点(或边缘),你想要的样式与默认值不同.通过创建子图或离散组节点,您可以拥有多个节点"模板" (请参阅点手册).

  3. rank = same允许您指定一组具有相同垂直位置的节点(如果rankdir设置为TB,则表示"从上到下").

  4. 默认情况下,节点名称(例如,我的图中的a,b,c)用作节点的标签.如果你不想在渲染图中显示它,只需设置label =""

在此输入图像描述


Art*_*lor 8

Graphviz绝对适合您的要求.主要的graphviz.org网站目前看来似乎已经停止,但有人已经将画廊示例(带有源代码)反映到Flickr.

http://www.flickr.com/photos/kentbye/sets/72157601523153827/

据我所知,你不能创建"模板",但你可以为圈子做这样的事情:

node[shape=circle, color=white, style=solid];
node1;node2;node3;
Run Code Online (Sandbox Code Playgroud)

这将定义一个节点(在逐行评估文件时将其视为"状态")然后您可以在切换到矩形之前在该"状态"中定义圆节点.

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

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