最終的には図のようなグラフを書きたい.

と思いまして,いろいろ調べたところ,GraphVizというソフトが使えそう,と思いました.
WindowsでもLinuxでもMacでも使えます.
1, 環境をつくる
Ubuntuからは,まず
sudo apt-get install graphviz
これだけ.
windowsでは
まず http://www.graphviz.org/ からダウンロードしてインストール.
cygwinにパスを通すため,graphvizの実行ファイルのディレクトリ(例えば,Program Filesの下にインストールした場合は C:\Program Files\Graphviz\bin)を環境変数の「$Path」に追加します.(「コントロールパネル」→「システム」→「システムの詳細設定から」)
そして再起動.
2, 使ってみる
簡単なグラフを書いてみましょう.
digraph G{
morning -> afternoon
afternoon -> evening
evening -> night
night -> morning
}
こんな感じでつないで書ける.簡単.
これをtest.dotと名前を付けて保存します.
そして,シェルから
dot -Tpng test.dot -o test.png
として実行すると,問題がなければtest.pngという画像ができています.

test.png
png以外にも,jpgやgif,psなどにすることも可能です.
3, 作成
あとは参考になりそうなサイトなどを調べて,自分で作ってみてください.
・【特選フリーソフト】テキストをグラフに変換 Graphviz : ITPro
・PHPにおけるグラフ描画とアルゴリズム : Codezine
・テキストから図を作成 - Graphviz : アシアルブログ
・dotを使ったグラフ描画[pdf]
個人的には,最後のドキュメント(pdf)が,サンプルプログラムも多く載っていてよかったです.
4, 注意
先ほど示した方法では,必ずノード同士に「ランク」というものが存在するため,ソーシャルグラフのようなグラフはかけません.
そこで,
dot -Kneato -Tpng test.dot -o test.png
というように,-Kneatoというオプションをつけて実行することで,ランクを持たないグラフを書くことができるようです.
そうすると,先ほどのグラフは

test.png2回目
となります.
5, おまけ
最後に,サンプルとして最初に載せたグラフのコードを載せて置きます.
digraph G{
size="4,4"; //画像の大きさを指定
ratio=fill //画像の大きさまでグラフを引き延ばすように指定
/Homeの形と塗りつぶす色,塗りつぶすことを指定
Home [shape=house, fillcolor="#FFE4C4", style=filled];
//線の色を指定
edge [color="#000080"]
//ノードの塗りつぶす色,フォントなどを指定
node[fillcolor="#E6E6FA", style=filled, fontname="monospace"];
Home -> Internet
Office -> Internet
Internet -> amazon
Home -> Office [weight=4];
Home -> Gym
Home -> Park
amazon -> Home [weight=2];
Nengajo -> Home
Office -> Nengajo
Super_Market -> Home
Gym -> Super_Market
}
