Graphviz事始め
最近Graphvizをちょこっと触っているので「Graphvizとはなんぞや」みたいなところをまとめてみます。
Graphvizとは
Graphvizはグラフと呼ばれるデータをビジュアル化できるオープンソースのツールです。
インプットは後述のDOT言語で書かれたテキストファイル、アウトプットはjpeg, png, gif, svg, pdfをはじめとした多種多様なフォーマットに対応しています。詳細はOutput Formats | Graphviz - Graph Visualization Softwareをどうぞ。
最新の安定版は2014年にリリースされた2.38。初版は調べきれなかったのですが、少なくとも2000年には存在しているので大変由緒正しきソフトウェアと言えるんじゃないでしょうか。
Linux、Windows、MacOSとクロスプラットフォームでバイナリが提供されているので、大抵の環境で問題なく使えるはずです。
グラフ
Graphvizにおけるグラフは棒グラフとか円グラフのことではなく、ある種のデータ構造を指します。
Wikipediaのグラフ (データ構造)から引用すると
グラフ(英: Graph)とは、ノード(頂点)群とノード間の連結関係を表すエッジ(枝)群で構成される抽象データ型
です。
DOT言語
Graphvizはデータを記述するためにDOT言語というデータ記述言語を採用しています。
試してみた
DOT言語でグラフを定義します。
digraph example {
graph [
// グラフ全体の設定
charset = "UTF-8";
label = "graph sample",
rankdir = LR
];
node [
// ノード共通の設定
style = "solid, sfilled"
];
edge [
// エッジ共通の設定
];
// ノードの定義
node1
node2 [shape = box]
node3 [shape = circle]
node4 [shape = diamond]
node5 [shape = folder]
// エッジの定義
node1 -> node2
node2 -> node3 [label = "pattern1"]
node2 -> node4 [label = "pattern2"]
node3 -> node5 [style = "dotted"]
node4 -> node5 [arrowhead = "tee"]
}
dotコマンドを使って変換します。
f:\> dot -T png example.dot -o example.png
これでグラフが描画できます。
設定用のパラメータはかなり豊富に用意されているので、もっともっと複雑なグラフも書けますし、もっともっと凝った見た目にもできます。 そのためにはいろいろ調べないとダメですけどね...
参考情報
歴史あるソフトウェアなだけあって情報はかなりカオスです。公式サイトは再構築の真っ最中っぽい。
- Graphviz | Graphviz - Graph Visualization Software
- 公式サイト
- メンテナンスが止まっている気配がします
- graphviz / graphviz · GitLab
- 恐らく最新のリポジトリ
- ellson/MOTHBALLED-graphviz: Moved to https://gitlab.com/graphviz/graphviz
- 旧リポジトリ
- Graphviz - Graph Visualization Software
- githubにソースを移行するにあたって書かれたと思われるドキュメント類
- 公式サイトとの棲み分けはよく分からず
日本語情報も豊富ですが、あんまり古いと役に立たない恐れがあるので、最近投稿されたものを参考にするのがいいかと思います。
- テキストデータをグラフ画像に変換するツール「Graphviz」ことはじめ | Developers.IO
- Graphvizとdot言語でグラフを描く方法のまとめ - Qiita
- Graphiz の基本的な使い方を学んで連絡網を作る - それマグで!
これだけ歴史があってよく使われているツールなのに書籍は全然出ていないようです。入門書くらいはあってもよさそうなのですが。 使いこなしのためにはネットが頼りですね。
おススメ