1. dotコマンド(Graphviz)
1.1. What's?
dot言語という文法で書かれたテキストファイルから、図を作成するソフト
1.2. 使い方
・$ dot -Tpng -o 出力するファイル名 dotファイル のように使う
・-T〜のオプションを変えれば、GIF, PNG, SVG, PDF, PostScriptなどで出力可
1.3. 文法
1.3.1. 単純な図形
以下、mytest.dotというファイル名で保存
digraph test {
Tokyo -> Nigata -> Aomori;
Tokyo -> Sendai -> Aomori [dir = both];
}
として、dot -Tpng -o mytest.dot output.png
1.3.2. 日本語表示
digraph test {
Tokyo [label = "東京"];
Tokyo -> Nigata -> Aomori;
Tokyo -> Sendai -> Aomori;
}
1.3.3. 細かな設定
1.3.3.1. ノードを結ぶ線についての設定
・線を点線or太線にする
点線:Tokyo -> Uenoと記述したすぐ右に、[style=dotted]
太線:同じく[style=bold]
・線の色を変える
Shinjuku -> Okutama [color=red];
・線の横に文字を表示する
Shinjuku -> Kobuchizawa [label=MoonlightShinsyu]
・矢印の先端の形を変える
■少し尖った形
Sun -> Moon [ arrowhead = vee ]
■ダイヤモンド
Sun -> Moon [ arrowhead = diamond ]
■矢印無し
Sun -> Moon [ arrowhead = none ]
1.3.3.2. ノードの設定
・ノードの形を変える(1)
Tokyo [shape=box];
Tokyo -> Kobuchizawa;
→Tokyoの枠が四角になる。
→boxの他、ellipse(楕円、標準ではこれ)、circle(円)、plaintext(枠なし)
など
角を取るには、以下のようにする
Yukito [shape=box style=rounded];
Yukito -> Yue;
・ノードの形を変える(2)
Shinjuku [shape=polygon,sides=5]
→ノードが五角形になる
・ノードの形を変える(3)
shapeをrecordにすると、表が作れる。
表の構造はlabelに記載する。
■横に東京・新宿、とならぶ表ができ、Hirosakiと線でつながる
Tokyo [shape=record label="東京都|新宿"];
Tokyo -> Hirosaki;
■縦なら、こう
Tokyo [shape=record label="{東京都|新宿}"];
Tokyo -> Hirosaki;
→縦に行を増やしてゆくには、{東京都|新宿|池袋|上野}のようにすれば良い
■入れ子にできる
Tokyo [shape=record label = "{東京都|新宿|{池袋|いけふくろう}|上野}" ];
Tokyo -> Hirosaki;
■htmlで表が書ける
digraph html {
Haribote [shape=none, margin=0, label=<
<table border="0" cellborder="1" cellspacing="0">
<tr><td>名前</td><td>評価(百点満点)</td></tr>
<tr><td>ともよ</td><td>97</td></tr>
<tr><td>さくら</td><td><font color="red">9999999999999999999999999999999999999</font></td></tr>
</table>
>];
}
cf.スペースはトークンの区切りと解釈されるので、\でエスケープする
cf.カッコの類(〈〉)、|などを文字として使う場合もエスケープする
・ノードの横・縦の長さを変える
Komoro [width=5,height=5]
Shinjuku -> Kobuchizawa -> Komoro;
→ノードの表示がwidth,heightに収まらなければ無視される。
Komoro [width=1,height=1,fixedsize=true]
Shinjuku -> Kobuchizawa -> Komoro;
→こうすると、width,heightが必ず強制される。
→表示する文字が多いと、枠からはみ出る
・ノードの文字の大きさを変える
Tokyo [fontsize=36]
Tokyo -> Tateyama;
・ノードの枠を何重かにする
Shinjuku [peripheries=3]
Shinjuku -> Kobuchizawa -> Komoro;
とすると、ノードの枠が3重に表示される
・ノードの枠の色を指定する
Shinjuku [color="red"]
Shinjuku -> Kobuchizawa;
・ノードを指定した背景色で塗りつぶす
Shinjuku [color="red",style=filled]
Shinjuku -> Kobuchizawa;
・全ノードについて一括設定(node)
node [shape=box]
Shinjuku -> Kobuchizawa -> Komoro;
Komoro -> Shinonoi -> Matsumoto;
Matsumoto -> Kobuchizawa -> Tachikawa -> Shinjuku;
・ひとつのノードからの複数の分岐を、一度に記述する
Shinjuku -> {Matsumoto; Nigata; Okutama}
1.3.3.3. その他
・コメントを付ける
/*...*/や、//...はコメントとして無視される。C++と同じやな。
・参考文献とか
http://www.graphviz.org/pdf/dotguide.pdf
2. gnuplot
2.1. What's
2.2. 使い方
2.2.1. 2値データからグラフを描く
gnuplotと打って起動。
plot "ファイル名"、としてグラフを書く
2.2.2. 3値データから3Dグラフを描く
gnuplotと打って起動。
splot "ファイル名"、としてグラフを書く
2.2.3. 既にある関数
plot sin(x)、とすればサイン関数が描かれる
2.3. その他
3. Mscgen
3.1. What's
縦に時間軸をとった図が描けます。
例えば、TCPプロトコルの3-way handshakeなどの解説でよく見るような図とかの作成に便利です。
作者が、Graphvizにインスパイヤされて作ったらしく、文法がdotに似ています。
3.2. 使い方
mscgen -i mscfile -o output.png -T png
3.3. 文法基礎
msc {
a,b,c;
a->b [label = "test"];
}
のように記載します。
a,b,cはそれぞれ縦軸の名前です。
a->bはa軸からb軸に線を引く事を意味します。
labelは、線の上に記載される文字です。
3.4. その他
4. graph-easy
4.1. 使い方
コマンドにテキスト出力:
echo "[ one ] --> [ two ]" | graph-easy
graph-easy フォーマットにしたがって書かれたファイル名
その他:
graph-easy フォーマットにしたがって書かれたファイル名 --png
graph-easy filename output.svg --as_svg
graph-easy filename output.jpg --as_jpg
など
4.2. 基礎
・単純な構造
[ one ] --> [ two ]
・線に名前を付ける
[ tokyo ] -- train --> [ yurakucho ]
・ひとつのノードから複数に分岐する
[ tokyo ] -- train --> [ yurakucho ],[ Ueno ]
・ノードを横に分割する
[ tokyo|shinjuku ] --> [ yurakucho ]