LoginSignup
9
18

More than 5 years have passed since last update.

blockdiagの文法まとめ

Last updated at Posted at 2017-04-09

■ blockdiagとは

特定の書式に従ったテキストファイルを、png,svg,pdfなどの様々な形式の画像ファイルに変更するオープンソース。

以下のデモサイトでもテストができる。
http://blockdiag.com/ja/blockdiag/demo.html

■ インストール手順

Windowsでのインストール手順。

$ pip install webcolors
$ easy_install pillow
$ easy_install blockdiag

■ 実行方法

下記のようなファイルを用意する。

blockdiag {
    // 記号が先頭だとコメントになる模様
    /* コメント */
    # コメント
    ( コメント
    > コメント
    " コメント"

    // フォント等の設定を行う
    default_fontsize = 24;

    // -,>を使って矢印の向きを使う
    node_id1 -> node_id2;
    node_id3 <- node_id4;
    node_id5 -- node_id6;
    node_id7 <-> node_id8;

    // 複数のノードのグループ化ができる
    // グループにしたノードは色枠で囲まれる
    group {
        node_id6; node_id8;
    }

}
# png変換
$ blockdiag simple.diag
# svg変換
$ blockdiag -Tsvg simple.diag

■ ラベル属性

ノードの形状、ノード上のフォントの設定を変更するための属性。

項目 項目内容 設定値 設定値内容 設定例 デフォルト値
label = String ノードに表示される文字列を定義。 B [label = "Title"]; 省略時は ノードIDがラベルとなる。
style = Type of line ノードを囲む境界線の種類を指定。 省略時は実線。
dotted 点線。 B [style = dotted];
dashed 破線。 C [style = dashed];
Number, Number, ... 線の長さ、空白の長さをカンマ区切りで交互に指定。 D [style = "3,3,3,3,15,3"];
color = #RRGGBB or colorname ノードの背景色を指定。 指定がない場合は白。
none 透明色 B [color = none];
pink,red,blue,greenなど 指定した色 C [color = pink];
#NNNNNN #NNNNNN形式 D [color = "#888888"];
numbered = Integer ノードの右上に表示させる番号を指定。 B [numbered = 99];
C [numbered = A];
shape = Type of shape ノードの形状を指定。 省略時は box
box 四角形 A [shape = "box"];
routebox 丸み帯びた四角形 A [shape = "roundedbox"];
diamond ひし形 A [shape = "diamond"];
eclipse 楕円 A [shape = "ellipse"];
cloud A [shape = "cloud"];
note テキストファイルの抽象図形 A [shape = "note"];
mail メールの抽象図形 A [shape = "mail"];
actor 人間 A [shape = "actor"];
minidiam 小ひし形 A [shape = "minidiamond"];
beginpoint 始点(黒点) A [shape = "beginpoint"];
endpoint 終点(2重丸) A [shape = "endpoint"];
dots 縦方向の3つの黒点 A [shape = "dots"];
flowchart.condition 分岐(ひし形) A [shape = "flowchart.condition"];
flowchart.database データベース(円柱) A [shape = "flowchart.database"];
flowchart.input 入力ファイル(ひし形) A [shape = "flowchart.input"];
flowchart.loopin 繰り返し処理開始 A [shape = "flowchart.loopin"];
flowchart.loopout 繰り返し処理終了 A [shape = "flowchart.loopout"];
flowchart.terminator 処理(丸み帯びた四角形) A [shape = "flowchart.terminator"];
background = background image ノードに表示する背景画像を指定。ファイルパス、または URL で指定する。 A [label = "", background = "_static/python-logo.gif"];
stacked 複数のノードを重ね合わせた状態にする。 A [stacked];
B[shape = "ellipse", stacked];
description = description Sphinx 拡張で desctable オプションを利用している場合、図の下に各ノードの説明表を表示。 C [label = "タイトル", description = "説明"];
icon = Image file ノードに表示させるアイコン画像を指定する。ファイルパス、または URL で指定。 A [icon = "_static/feed-icon-legacy_orange.png"];
textcolor = #RRGGBB or colorname ノードのラベル文字列の色を指定。 省略時は黒。
none 透明色 B [textcolor = none];
pink,red,blue,greenなど 指定した色 C [textcolor = pink];
#NNNNNN #NNNNNN形式 D [textcolor = "#888888"];
width = Integer ノードの幅を指定。 省略時は128。
height = Integer ノードの高さを指定。 省略時は40。
fontsize = Integer ノードのラベル属性のフォントサイズを指定。 省略時は11。
rotate = Integer ラベルの回転角を指定する。0, 90, 180, 270 のいずれかの値を設定できる。 省略時は0。
0
90
180
270

■ エッジ属性

ノード間を結ぶ線。

項目 項目内容 設定値 設定値内容 設定例 デフォルト値
label = String 短い文をエッジに表示。
style = Type of edge line エッジの線の種類を指定。 省略時は実線
dotted 点線で繋ぎます。 A -> B [style = dotted];
dashed 破線で繋ぎます。 B -> C [style = dashed];
none エッジを消。 C -> D [style = none];
Number, Number, ... 線の長さ、空白の長さをカンマ区切りで交互に指定。 D -> E [style = "3,3,3,3,15,3"];
hstyle = Type of head shape 矢印の形状を指定。
generalization 汎化 A -> B [hstyle = generalization];
composition コンポジション B -> C [hstyle = composition];
aggregation 集約 C -> D [hstyle = aggregation];
color = #RRGGBB or colorname エッジの色を指定。 省略時は黒。
none 透明色 B -> C [color = "none"];
pink,red,blue,greenなど 指定した色 B -> C [color = "pink"];
#NNNNNN #NNNNNN形式 B -> C [color = "#888888"];
dir = direction 矢印の向きを指定。
none 矢印を書かずにノードを繋ぐ。 A -> B [dir = none];
forward 矢印を左のノードから右のノード、または上のノードから下のノードに向かって書く。 B -> C [dir = forward];
back 矢印を右のノードから左のノード、または下のノードから上のノードに向かって書く。 C -> D [dir = back];
both 矢印を両方に書く。 D -> E [dir = both];
folded エッジを折り返す。 C -> D [folded];
textcolor = #RRGGBB or colorname エッジのラベルの色を指定。省略時は黒。
none 透明色 A -> B[label=title, textcolor=none];
pink,red,blue,greenなど 指定した色 A -> B[label=title, textcolor=pink];
#NNNNNN #NNNNNN形式 A -> B[label=title, textcolor=#888888];
thick エッジを太く。 B -> D[thick];
fontsize = Integer エッジのラベルのフォントサイズを指定。 A -> B [label='text', fontsize=16]; 省略時は11。

ダイヤグラム属性

図形全体の設定。

項目 項目内容 設定値 設定値内容 設定例 デフォルト値
node_width = Integer ノードの幅を指定。 node_width = 200; 省略時は128。
node_height = Integer ノードの高さを指定。 node_height = 100; 省略時は40。
span_width = Integer ノード間の横幅を指定。 span_width = 240; 省略時は64。
span_height = Integer ノード間の縦幅を指定。 span_height = 120; 省略時は40。
default_fontsize = Integer ノードのラベル属性に使用するフォントサイズを指定。 default_fontsize = 24; 省略時は11。
default_shape = Shape ノードの形状のデフォルトを指定。 省略時はbox。
box 四角形
routebox 丸み帯びた四角形
diamond ひし形
eclipse 楕円
cloud
note テキストファイルの抽象図形
mail メールの抽象図形
actor 人間
minidiam 小ひし形
beginpoint 始点(黒点)
endpoint 終点(2重丸)
dots 縦方向の3つの黒点
flowchart.condition 分岐(ひし形)
flowchart.database データベース(円柱)
flowchart.input 入力ファイル(ひし形)
flowchart.loopin 繰り返し処理開始
flowchart.loopout 繰り返し処理終了
flowchart.terminator 処理(丸み帯びた四角形)
orientation = portrait 縦書きモードに。 省略時は横書きモード。
default_node_color = #RRGGBB or colorname ノードのデフォルトの色を指定。 省略時は白。
none 透明色 default_node_color = none;
pink,red,blue,greenなど 指定した色 default_node_color = pink;
#NNNNNN #NNNNNN形式 default_node_color = "#888888";
default_group_color = #RRGGBB or colorname グループのデフォルトの色を指定。 省略時はオレンジ。
none 透明色 default_group_color = none;
pink,red,blue,greenなど 指定した色 default_group_color = pink;
#NNNNNN #NNNNNN形式 default_group_color = "#888888";
default_linecolor = #RRGGBB or colorname ノードの枠とエッジのデフォルトの色を指定。 省略時は黒。
none 透明色 default_linecolor = none;
pink,red,blue,greenなど 指定した色 default_linecolor = pink;
#NNNNNN #NNNNNN形式 default_linecolor = "#888888";
default_textcolor = #RRGGBB or colorname ノードラベル、エッジラベル、グループラベルのデフォルトの色を指定。 省略時は黒。
none 透明色 default_textcolor = none;
pink,red,blue,greenなど 指定した色 default_textcolor = pink;
#NNNNNN #NNNNNN形式 default_textcolor = "#888888";
edge_layout = normal or flowchart Experimental エッジレイアウトルールを指定。

■ 参考サイト

9
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
18