Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【dot言語】のチートシート

そのうち色々と追記して行きます



疑問

・数式は入れることができないのか?

日本語はそのまま入力できるし、表示もされる


コメント文

// ここはコメント文

/* ここはコメント文 */

# ここはコメント文

の3種類がある


矢印なしのフローチャート

graph graphname {
a -- b -- c;
b -- d;
}
hoge3矢印ありのフローチャート
digraph graphname {
a -> b -> c;
b -> d;
}
hoge4

wikiの一番下にあった問題点ってのをそのままコピーして作ってみたら
グニャ〜って曲がったグラフができた・・・ 失敗だ・・・


digraph g {
node [shape=plaintext]
A1 -> B1
A2 -> B2
A3 -> B3

A1 -> A2 [label=f]
A2 -> A3 [label=g]
B2 -> B3 [label="g'"]
B1 -> B3 [label="(g o f)'" tailport=s headport=s]

{ rank=same; A1 A2 A3 }
{ rank=same; B1 B2 B3 }
}

hoge4
rankdir=LR;
スクリプトファイルの中に書いておくと
「上から下に」じゃなくて「左から右に」進むフローチャートができる


色を付ける

graph graphname {
node [style=filled, colorscheme=rdpu4];
#rankdir=LR;
a -- b -- c;
b -- d;

a [style=filled, fillcolor=1];
b [style=filled, fillcolor=2];
c [style=filled, fillcolor=3];
d [style=filled, fillcolor=4];
}

hoge3node [style=filled, colorscheme=rdpu3];の行は上の方に書かないとエラーが出た
調べてないから勘だけど、rdpu4の数字はいじってもOK
ある色からある色までを4分割するってことだと思う
数字を4にしたままで
d [style=filled, fillcolor=5];
のように置き換えるとエラーが出て変な色で塗りつぶされる



ノードの形は以下のような種類がある(参考にしたpdfより)
ノードの形

graph graphname {
node [style=filled, colorscheme=rdpu4];
#rankdir=LR;
a -- b -- c;
b -- d;

a [style=filled, fillcolor=1, share=circle];
b [style=filled, fillcolor=2];
c [style=filled, fillcolor=3];
d [style=filled, fillcolor=4];
}

のようにcircleと書けば円になってくれる



文字を改行したい

\n
でおk



矢印の横に文字を入れる方法

同じく一つ上のスクリプト

b -- d[label="hoge"];
のようにすればhogeと入る

たぶん、フローチャートの形によっては矢印と干渉するのでスペースなどを入れて対処する

他にも、次のようなオプションが付けられる。

// edge define
alpha -> beta [
label = "a-b", //エッジラベル
labelfloat = true, //ラベルの重なりを許可する
headlabel = "head", //エッジの終端にラベルをつける
taillabel = "tail", //エッジの始端にラベルをつける
labeldistance = 2.5, //ラベルの位置をノードからの距離で指定する
labelangle = 70, //ラベルの位置を角度で指定する
color = blue, //エッジカラー
style = solid, //エッジスタイル
dir = both, //エッジの矢印を指定する
arrowhead = normal, //エッジの終端の形状を指定
arrowtail = normal, //エッジの始端の形状を指定
arrowsize = 1, //矢印の大きさ倍率で指定
weight = 5 //エッジの重み付け 重みが大きいエッジが結ぶノードがより近く配置される
fontname = "Migu 1M", //エッジラベルフォント
fontsize = 14, //エッジラベルフォントサイズ
fontcolor = blue //エッジラベルフォントカラー
];
■ 参考 : Graphvizとdot言語でグラフを描く方法のまとめ



shapeの中には「レコード」というものがある
縦横に自由に分割できる上に、分割したパートについても矢印の出し入れができる



接続ポート

それぞれのノードの左右上下どこから矢印を出すかを制御できる

n : 上
ne : 右上
e : 右
se : 右下
s : 下
sw : 左下
w : 左
nw : 左上
c : 中央
_ : 自動
graph graphname {
node [style=filled, colorscheme=rdpu4];
a -- b[headport=w, tailport=e];
b -- c;
b -- d[label="hoge"];

a [style=filled, fillcolor=1, shape=circle];
b [style=filled, fillcolor=2];
c [style=filled, fillcolor=3];
d [style=filled, fillcolor=4];
}

hoge3headport="w"のようにダブルコーテーションはいらないので注意

a -- b[headport=w, tailport=e];
aからbへの矢印のうち、headportつまりbに入るところは左から
逆にtailportつまりaから出るところは右から出るようになっている
(矢印にとってのheadとtailなので少し理解するのに苦労した・・・)