グラフを作成するソフトウェアを作成しています。
最も基本的な形式では、グラフは、次のセグメントで 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
そして、この構造に似せたい (Windows 用の DIA で描画):
http://i56.tinypic.com/t070br.png
ノードの配置を意味します。特に:
- 分割 (2、4、8、10、15 など) は、サブツリーの上の中間にある必要があります
- ジャンクション (8、23、21 など) は、サブツリーの下の中央にある必要があります
- 枝は平準化する必要があります (5、6、15 は単一のレベルにあります。9、10、18 も同様です)。
- まっすぐなエッジの矢印 (ここでは行き過ぎかもしれませんが、試してみる価値があります)
- 全体として - 2 番目の図に示されている構造にできるだけ一致させます。