1

我正在编写一个构建图表的软件。
在其最基本的形式中,图形将在一个文件中描述,就像在下一段中传递给 agmemread 的字符串一样。这是构建并将其保存为 PNG 的代码:

#include <gvc.h>

int main()
{
    GVC_t* gvc;
    Agraph_t* g;    

    gvc=gvContext();
    g=agmemread
    (
        "digraph g"\
        "{"\
        "   1->2;"\
        "   2->3;"\
        "   2->13;"\
        "   3->4;"\
        "   4->5;"\
        "   4->6;"\
        "   5->8;"\
        "   6->7;"\
        "   7->8;"\
        "   8->9;"\
        "   8->10;"\
        "   9->23;"\
        "   10->11;"\
        "   10->12;"\
        "   11->23;"\
        "   12->23;"\
        "   13->14;"\
        "   14->15;"\
        "   15->16;"\
        "   15->19;"\
        "   16->17;"\
        "   17->18;"\
        "   18->21;"\
        "   19->20;"\
        "   20->21;"\
        "   21->22;"\
        "   22->23;"\
        "}"
    );

    gvLayout(gvc,g,"dot");
    gvRenderFilename(gvc,g,"png","g_gen.png");

    gvFreeLayout(gvc, g); 
    agclose(g); 
    gvFreeContext(gvc);

    return 0;
}

我的问题是,保存在“g_gen.png”(来自代码)中的图形如下所示:http: //i56.tinypic.com/25hk3de.png

我希望它类似于这种结构(使用 DIA for Windows 绘制):http:
//i56.tinypic.com/t070br.png

我的意思是节点的位置。尤其是:

  1. 拆分(如 2、4、8、10、15)应位于其子树上方的中间
  2. 连接点(如 8、23、21)应位于其子树下方的中间
  3. 分支应该被调平(5,6,15 在一个级别上;9,10,18 也是)
  4. 直边箭头(可能在这里走得太远,但值得一试)
  5. 总而言之 - 尽可能匹配第二张图片中呈现的结构
4

1 回答 1

0

我认为这与复杂的graphviz树结构问题相同(已经回答)。

于 2011-05-20T01:54:12.567 回答