【问题标题】:Is Graphviz the best tool for this type of graph?Graphviz 是此类图表的最佳工具吗?
【发布时间】:2011-11-24 03:38:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: graph graphviz graph-visualization


    【解决方案1】:

    当然,这是在您的问题中绘制图表的代码(如下所示,由点呈现)。

    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;
    }
    


    1. 第一行 digraph 用于 有向图(用于 边有方向)。

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

    3. rank=same 允许您指定一组具有相同 垂直位置(假设 rankdir 设置为 TB,这意味着 “从上到下”)。

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

    【讨论】:

      【解决方案2】:

      Graphviz 绝对适合您的要求。主要的 graphviz.org 网站目前似乎已关闭,但有人将画廊示例(附源)镜像到 Flickr。

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

      据我所知,您无法创建“模板”,但您可以为圈子做这样的事情:

      node[shape=circle, color=white, style=solid];
      node1;node2;node3;
      

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-12-31
        • 1970-01-01
        • 1970-01-01
        • 2011-03-03
        • 1970-01-01
        • 2023-03-20
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多