使用方法
$ dot -Tcanon input.dot
$ dot -Tdot input.dot
$ dot -Tgv input.dot
$ dot -Txdot input.dot
$ dot -Txdot1.2 input.dot
$ dot -Txdot1.4 input.dot

DOT

Graphviz言語

これらの形式は、dot言語で出力を生成します。

canon

canonを使用すると、レイアウトを実行せずに、入力の整形されたバージョンが生成されます。

例:単純なグラフ、-Tcanonによる標準化されたフォーマット

$ echo 'digraph { a->b }' | dot -Tcanon
digraph {
        node [label="\N"];
        a -> b;
}

dot / gv

dot(およびgvエイリアス)オプションは、属性付きdot出力を意味し、デフォルトの出力形式です。これは、グラフのレイアウト情報とともに入力を再現します。特に、bb属性はグラフに添付され、描画のバウンディングボックスを指定します。グラフにラベルがある場合、その位置はlp属性で指定されます。

各ノードにはposwidthが設定され、レコードの矩形はrects属性で指定されます。ノードがポリゴンであり、vertices属性が定義されている場合、この属性にはノードの頂点が含まれます。

すべてのエッジにはpos属性が割り当てられ、エッジにラベルがある場合、ラベルの位置はlpで指定されます。

例:単純なグラフ、-Tdotによるレイアウト位置の出力

$ echo 'digraph { a->b }' | dot -Tdot
digraph {
        graph [bb="0,0,54,108"];
        node [label="\N"];
        a    [height=0.5,
             pos="27,90",
             width=0.75];
        b    [height=0.5,
             pos="27,18",
             width=0.75];
        a -> b  [pos="e,27,36.104 27,71.697 27,63.983 27,54.712 27,46.112"];
}

xdot

xdot形式は、グラフコンポーネントの描画方法に関する詳細な情報を提供することにより、dot形式を拡張します。これは、ノード、エッジ、およびグラフに追加の属性に依存します。

xdot属性の種類に関するドキュメントも参照してください。

この形式は流動的です。より良い表現に関するコメントや提案は大歓迎です。形式の変更を可能にするために、Graphvizは属性xdotversionをグラフに付けます。入力グラフにxdotversion属性が設定されている場合、レンダラーはそのバージョンでサポートされている機能のみを出力します。xdot1.2xdot1.4形式は、それぞれxdotversion=1.2xdotversion=1.4を設定することと等価です。

追加の描画属性は、ノード、エッジ、クラスタ、およびグラフ自体に表示できます。6つの新しい属性があります。

属性 説明 制限事項
draw ラベルなしの一般的な描画
ldraw ラベル描画
hdraw ヘッド矢印 エッジのみ
tdraw テール矢印 エッジのみ
hldraw ヘッドラベル エッジのみ
tldraw テールラベル エッジのみ

特定のグラフオブジェクトに対しては、通常、ラベル指示の前にdraw指示を発行します。たとえば、ノードの場合、最初にdrawのコマンドを使用してから、ldrawのコマンドを使用します。

これらの属性の値は、以下の14個のレンダリングまたは属性操作のいくつかの(多重)集合の連結で構成されます。(括弧内の数字は、操作が形式に追加されたxdotバージョンを示しています。バージョン番号がない場合は、操作が元の仕様に含まれていました。)

E x₀ y₀ w h
塗りつぶされた楕円形 ((x - x₀) ÷ w)² + ((y - y₀) ÷ h)² = 1
e x₀ y₀ w h
塗りつぶされていない楕円形 ((x - x₀) ÷ w)² + ((y - y₀) ÷ h)² = 1
P n x₁ y₁ ... xₙ yₙ
指定されたn個の点を使用した塗りつぶされたポリゴン
p n x₁ y₁ ... xₙ yₙ
指定されたn個の点を使用した塗りつぶされていないポリゴン
L n x₁ y₁ ... xₙ yₙ
指定されたn個の点を使用したポリライン
B n x₁ y₁ ... xₙ yₙ
指定されたn個の制御点を使用したBスプライン
b n x₁ y₁ ... xₙ yₙ
指定されたn個の制御点を使用した塗りつぶされたBスプライン (1.1)
T x y j w n -b₁b₂...bₙ
ベースラインポイント(x,y)を使用して描画されたテキスト。テキストは-の後に続くnバイトで構成されます。jが-1(0,1)の場合、テキストはポイントに対して左揃え(中央揃え、右揃え)になります。値wは、ライブラリによって計算されたテキストの幅を示します。
t f
フォント特性の設定。整数fは、以下のORです。
フラグ 最小バージョン
BOLD 1
ITALIC 2
UNDERLINE 4
SUPERSCRIPT 8
SUBSCRIPT 16 (1.5)
STRIKE_THROUGH 32 (1.6)
OVERLINE 64 (1.7)
C n -b₁b₂...bₙ
塗りつぶしの色の設定。カラー値は-の後に続くnバイトで構成されます。(1.1)
c n -b₁b₂...bₙ
ペンの色の設定。カラー値は-の後に続くnバイトで構成されます。(1.1)
F s n -b₁b₂...bₙ
フォントの設定。フォントサイズはsポイントです。フォント名は-の後に続くnバイトで構成されます。(1.1)
S n -b₁b₂...bₙ
スタイル属性の設定。スタイル値は-の後に続くnバイトで構成されます。値の構文は、stylestyleItemで指定されているものと同じです。(1.1)
I x y w h n -b₁b₂...bₙ
左下の隅が(x,y)、右上の隅が(x+w,y+h)のボックスに描画される外部指定のイメージ。イメージの名前は-の後に続くnバイトで構成されます。これは通常、ビットマップイメージです。ピクセルからポイントに変換した場合でも、イメージのサイズは必要なサイズ(w,h)と異なる場合があります。レンダラーが必要なスケーリングを実行すると想定されます。(1.2)

塗りつぶされた図形(楕円、多角形、Bスプライン)は、2つの操作を意味します。まず、現在の塗りつぶし色で塗りつぶされた図形を描画し、次に、現在のペン色、ペン幅、ペンスタイルで塗りつぶされていない図形を描画します。

単一の描画属性(例:draw)のコンテキスト内では、グラフィック属性に暗黙的な状態があります。つまり、色、スタイル、フォント、またはフォント特性が設定されると、別のxdotコマンドによって値がリセットされるまで、すべての関連する描画操作に対して有効なままになります。

グラフィックモデルに組み込むことができるスタイル値は、xdot出力には表示されません。特に、スタイル値filledroundeddiagonals、およびinvisは表示されません。実際、スタイルにinvisが含まれている場合、xdot出力はまったく生成されません。

xdotのバージョン1.4では、カラー文字列で線形グラデーションと放射状グラデーションをエンコードできるようになりました。線形グラデーションは次の形式です。
    '[' x₀ y₀ x₁ y₁ n [color-stop]⁺ ']'
ここで、(x₀,y₀)と(x₁,y₁)はグラデーション線分の始点と終点を定義し、nはcolor-stopの数を示します。各color-stopは次の形式です。
    v m -b₁b₂...bₘ
ここで、vはグラデーション線分上の位置を定義する[0,1]の範囲の数値であり、色はmバイト文字列b₁b₂...bₘで指定されます。これは、「c」および「C」操作の色で使用されるものと同じ形式です。

放射状グラデーションは次の形式です。
    '(' x₀ y₀ r₀ x₁ y₁ r₁ n [color-stop]⁺ ')'
ここで、j=0,1について、x y rは、開始円と終了円の円の中心と半径を指定し、nはcolor-stopの数を示します。color-stopは線形グラデーションで定義されているものと同じ形式を持ち、これも分数オフセットとその関連色を指定します。

テキストの配置処理において、アプリケーションは独自のレンダリングプリミティブを使用して文字列幅を再計算することがあります。

テキスト操作は、ラベル属性でのみ使用されます。通常、非テキスト操作は、非ラベル属性でのみ使用されます。ただし、エッジにdecorate属性が設定されている場合、そのラベル属性にはポリライン操作も含まれます。さらに、ラベルが複雑なHTMLのようなラベルの場合、非テキスト操作も含まれます。

すべての座標とサイズはポイント単位です。ただし、エッジまたはノードが非表示の場合、描画操作はそれにアタッチされません。

バージョン情報

Xdotバージョン Graphvizバージョン 修正
>1.0 1.9
>1.1 2.8 最初のプラグインバージョン
>1.2 2.13 画像演算子Iのサポート
>1.3 2.31 数値精度の追加
>1.4 2.32 グラデーションカラーの追加
>1.5 2.34 テキストレイアウトの問題の修正。グラデーションの反転ベクトルの修正。バージョン固有の出力をサポート。テキスト特性のための新しいt操作
>1.6 2.35 tにSTRIKE-THROUGHビットを追加
>1.7 2.37 tにOVERLINEを追加
例:単純なグラフ。-Txdotを使用してレイアウト位置と描画情報を出力します。

$ echo 'digraph { a->b }' | dot -Txdot
digraph {
        graph [_draw_="c 9 -#fffffe00 C 7 -#ffffff P 4 0 0 0 108 54 108 54 0 ",
             bb="0,0,54,108",
             xdotversion=1.7
        ];
        node [label="\N"];
        a    [_draw_="c 7 -#000000 e 27 90 27 18 ",
             _ldraw_="F 14 11 -Times-Roman c 7 -#000000 T 27 86.3 0 7 1 -a ",
             height=0.5,
             pos="27,90",
             width=0.75];
        b    [_draw_="c 7 -#000000 e 27 18 27 18 ",
             _ldraw_="F 14 11 -Times-Roman c 7 -#000000 T 27 14.3 0 7 1 -b ",
             height=0.5,
             pos="27,18",
             width=0.75];
        a -> b  [_draw_="c 7 -#000000 B 4 27 71.7 27 63.98 27 54.71 27 46.11 ",
             _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 30.5 46.1 27 36.1 23.5 46.1 ",
             pos="e,27,36.104 27,71.697 27,63.983 27,54.712 27,46.112"];
}