【DOT】DOT言語 ~ 基礎知識編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2023/06/14/174104

で扱った DOT言語 に関して、ちょこちょこまとめる

目次

【1】学習サイト
【2】構文
 1)テンプレート
【3】用語整理
 1)Node / Edge
 2)GraphViz
【4】サンプル

【1】学習サイト

* DOT言語を学ぶなら、以下のサイトなどを参照。

https://hackmd.io/@maxy8821/HkO3cjzQr
https://stabucky.com/wp/archives/4191

* 以下の「graphviz の公式ドキュメント」と「Playground」で
 触りながら結構を見て、学ぶとよさげ。

graphviz の公式ドキュメント
https://graphviz.org/doc/info/lang.html
Playground
http://magjac.com/graphviz-visual-editor/

【2】構文

digraph/graph グラフ名 {
  graph [属性="値";];
  node  [属性="値";];
  edge  [属性="値";];
  "ノードA"->"ノードB" [属性 = "値";];
  "ノードA"--"ノードB" [属性 = "値";];
    :
}

1)テンプレート

// 有向グラフ (矢印ありグラフ)
digraph <グラフ名(オプション)> {
  #<ここに書いていく>
}

// 無向グラフ (矢印なしグラフ)
graph <グラフ名(オプション)> {
  # <ここに書いていく>
}

【3】用語整理

1)Node / Edge

* Node = 節
* Edge = 線、辺
 => 例を見たら、一発で分かる

// a/b/c/d が、Node(節)
// -> が、Edge (線)
digraph {
  a->b;
  a->c;
  a->d;
}

2)GraphViz

* DOT言語で記述されたグラフ構造を描画してくれるオープンソース

【4】サンプル

* 以下をコピペで、PlayGrand上に張り付けながら
 弄るとイメージできるかも。

http://magjac.com/graphviz-visual-editor/

// 極力載せてみる
digraph {
  label="Hello World"
  rankdir="LR";
  graph [fontsize=10];
  node [fontsize=15, shape=box, style=rounded];
  edge [fontsize=20];

  subgraph cluster0 {
     a  -> b [color = red, style="dotted"]
  }
  subgraph cluster1 {
     A -> B [label="sample"]
  }

  default1;
  default2;
  ellipse[shape="ellipse"];
  box[shape="box"];
  circle[shape="circle"];
  record[shape="record"];
  plaintext[shape="plaintext"];
  point[shape="point"];

  c1[color="red"];
  c2[style="filled",color="blue"];
  c3[color="green"];

  default1 -> default2;
}

参考文献

http://www.yosbits.com/wordpress/?page_id=4845
https://ykng0.hatenablog.com/entry/2016/07/11/140720
https://qiita.com/kanetai/items/16d17efe681e3edfec3d

関連記事

DOT言語 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/06/16/000531
DOT言語 ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2023/07/18/120407
DOT言語表示ツール ~ d3-graphviz
https://dk521123.hatenablog.com/entry/2023/06/18/102448
Python + DOT言語で図作成するには
https://dk521123.hatenablog.com/entry/2023/06/14/174104
Python で d3-graphviz を使ってアニメーション表示ツールを作る
https://dk521123.hatenablog.com/entry/2023/06/24/000000
sqlparser-rs ~ SQL Parser for Rust ~
https://dk521123.hatenablog.com/entry/2023/06/12/000000