-[[Graphviz>http://www.graphviz.org/]] 公式サイト
-[[Graphviz チュートリアル >http://homepage3.nifty.com/kaku-chan/graphviz/index.html]]
-[[graphviz>http://shirou.prosou.nu/emacs-wiki/graphviz.html]]
-下記2件はチュートリアルサイト.2005年の文献だが,十分な情報が書かれている.
試しに小倉百人一首の歌をツリー構造で書きだしてみた
[[http://s1-01.twitpicproxy.com/photos/large/444019180.png>http://twitpic.com/7ccve4/full]]
*Graphvizとは [#x2655004]
-データをグラフに変換してくれるソフト
-グラフ,とはいわゆる連結グラフとか有向グラフと呼ばれる類のことで,棒グラフや円グラフのことではない
--棒グラフや直線グラフだったら[[Gnuplot>gnuplotメモ]]を使おう
-boostライブラリにも含まれてるので,C++のプログラムにも組み込み可能
*グラフの書き方 [#mdb16881]
+dot言語でグラフを記述する
+Graphvizで処理する
*dot言語の基本 [#pe6dcf6e]
#geshi(dot,number){{
digraph sample {
A -> B -> C;
A[shape=circle,label="A"]
B[shape=box,label="B"]
C[shape=box,label="C"]
}
}}
#ref(sample.gif)
**digraph [#ja32dc9a]
-有向グラフ
-ノードの連結には -> を使う
**graph [#l573c239]
-おまじない
*エラーなどなど [#d62c1b0f]
**Warning: xxxx.dot:xx: ambiguous "0x" splits into two names: "0" and "x" [#w944ddd4]
-ノードの名前に使えるのは英数字だけなのだが,最初の1文字はアルファベットでなくてはならない
-The name of the node can be consisted by alphabet and digit, but the first character must be an alphabet.¬e{boost-graphviz:参考:[[Boost users' mailing page: [BGL] write_graphviz error>http://lists.boost.org/boost-users/2003/08/4861.php]]};
*Graphviz のツールの種類 [#hdb5efbf]
-Graphvizのツールの種類には様々な種類がある。
-描きたいグラフに応じて使い分けるべき
--dot:階層構造や、上限関係を記述するのに向いてるツール
--neato:ノード間のエッジをバネモデルに基づき配置する
--fdp:neato同様バネモデルで配置するが、力最小化でなく、エネルギー最小化にもとづき配置する
--sfdp:fdpのノード大量版で使用するべきツール
--twopi:同心円状に配置する。NTPのストラタムとか、DNSの階層構造を同心円状に書くのに向いてる。このツールだけは中心ノードを指定する必要がある
--circo:円状にノードを配置する。ベンゼン環やTNTみたいな科学記号において、輪っかを綺麗に描くためのツール
-[[ギャラリー>http://www.graphviz.org/Gallery.php]]¬e{graphviz-gallery:[[Gallery | Graphviz - Graph Visualization Software>http://www.graphviz.org/Gallery.php]], 2013-02-08閲覧};
*描画エンジン [#u86e3989]
-pngなどを描く場合、cairo とか gd とか、描画ライブラリを選べる¬e{graphviz-documentation:[[Command-line Invocation | Graphviz - Graph Visualization Software>http://www.graphviz.org/content/command-line-invocation]], 2013-02-08閲覧};
-Tpng:cairo:gd
-といった具合に。
-でも、だいたいデフォルトと変わらない。
-Tpng:
-とだけ指定すると、指定可能なオプションが列挙される
*dot言語でレイアウトを崩したくない場合 [#r575681e]
-レイアウトを崩したくない場合には constraint=false が便利
-参考:[[rank - Subgraph layout in graphviz - Stack Overflow>http://stackoverflow.com/questions/12463541/subgraph-layout-in-graphviz]]¬e{rank-graphviz-dont-brake-layout-stack-overflow:[[rank - Subgraph layout in graphviz - Stack Overflow>http://stackoverflow.com/questions/12463541/subgraph-layout-in-graphviz]], 2012-09-17投稿, 2013-08-26閲覧};
-なお、透明な線で順序関係を描く場合は、color="white" ではなく、 style=invis が便利
*Graphvizの参考ページ [#o648c290]
-[[Graphviz - mynote>http://reddog.s35.xrea.com/wiki/Graphviz.html]]¬e{reddog-graphgiz:[[Graphviz - mynote>http://reddog.s35.xrea.com/wiki/Graphviz.html]], 2005-09-13公開, 2012-10-23更新, 2014-12-01閲覧};
-[[graphviz>http://shirou.prosou.nu/emacs-wiki/graphviz.html]]¬e{graphviz-emacs-wiki:[[graphviz>http://shirou.prosou.nu/emacs-wiki/graphviz.html]], 2005-05-11更新, 2014-12-01閲覧};