使用方式
$ 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

其他繪圖屬性可以出現在節點、邊緣、叢集和圖形本身。有六個新的屬性

屬性 描述 限制
draw 不含標籤的一般繪圖
ldraw 標籤繪圖
hdraw 頭部箭頭 僅限邊緣
tdraw 尾部箭頭 僅限邊緣
hldraw 頭部標籤 僅限邊緣
tldraw 尾部標籤 僅限邊緣

對於給定的圖形物件,通常會在標籤指令之前發出繪製指令。例如,對於節點,會先使用 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
旗標 最小版本
粗體 1
斜體 2
底線 4
上標 8
下標 16 (1.5)
刪除線 32 (1.6)
頂線 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 個位元組組成。值的語法與 style 中指定的 **styleItem** 相同。(1.1)
I x y w h n -b₁b₂...bₙ
在以左下角 (x,y) 和右上角 (x+w,y+h) 為邊界的方框中繪製外部指定的圖像。圖像的名稱由 - 後面的 n 個位元組組成。這通常是一個點陣圖圖像。請注意,即使從像素轉換為點數,圖像大小也可能與所需的大小 (w,h) 不同。假設渲染器會執行必要的縮放。(1.2)

請注意,填滿的圖形(橢圓形、多邊形和 B 樣條)表示兩個操作:首先,使用目前的填滿顏色繪製填滿的圖形;其次,使用目前的筆顏色、筆寬度和筆樣式繪製未填滿的圖形。

在單一繪圖屬性(例如 draw)的上下文中,圖形屬性有一個隱含的狀態。也就是說,一旦設定了顏色、樣式、字型或字型特性,它對於所有相關的繪圖操作都保持有效,直到另一個 xdot 命令重設該值。

可以納入圖形模型的樣式值不會出現在 xdot 輸出中。特別是,樣式值 filledroundeddiagonalsinvis 不會出現。事實上,如果樣式包含 invis,則根本不會有任何 xdot 輸出。

從 xdot 1.4 版開始,顏色字串現在可以編碼線性漸層和放射狀漸層。線性漸層的形式為
    '[' x₀ y₀ x₁ y₁ n [顏色停止點]⁺ ']'
其中 (x₀,y₀) 和 (x₁,y₁) 定義漸層線段的起點和終點,而 n 給出顏色停止點的數量。每個顏色停止點的形式為
    v m -b₁b₂...bₘ
其中 v 是範圍 [0,1] 中的一個數字,定義漸層線段上的位置,其顏色由 m 位元組字串 b₁b₂...bₘ 指定,其格式與 'c' 和 'C' 操作中使用的顏色相同。

放射狀漸層的形式為
    '(' x₀ y₀ r₀ x₁ y₁ r₁ n [顏色停止點]⁺ ')'
其中 x y r,對於 j=0,1,指定起點和終點圓的中心和半徑,而 n 給出顏色停止點的數量。顏色停止點的格式與線性漸層的定義相同,再次給出小數偏移量及其相關聯的顏色。

在處理文字對齊時,應用程式可能想要使用自己的渲染原語重新計算字串寬度。

文字操作僅在標籤屬性中使用。通常,非文字操作僅在非標籤屬性中使用。但是,如果在邊緣上設定了 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 新增刪除線位元
>1.7 2.37 t 新增上橫線
範例:簡單圖表,使用 -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"];
}
上次修改於 2024 年 7 月 28 日:將所有 Hugo 'ref' 替換為 'relref' (bbef86a)