$ 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
这些格式生成以 dot 语言 为输出的输出。
canon
使用 canon
会生成输入的漂亮打印版本,而不执行布局。
-Tcanon
规范化的格式
$ echo 'digraph { a->b }' | dot -Tcanon
digraph {
node [label="\N"];
a -> b;
}
dot / gv
dot
(以及 gv
别名)选项对应于带属性的 dot 输出,并且是默认的输出格式。它会重现输入,以及图的布局信息。特别是,一个 bb
属性会附加到图上,指定图形的边界框。如果图有一个标签,它的位置由 lp
属性指定。
每个节点都会获得 pos
、width
属性,并且记录矩形在 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.2
和 xdot1.4
分别等效于设置 xdotversion=1.2
和 xdotversion=1.4
。
其他绘图属性可以出现在节点、边、集群和图本身。有六个新的属性
属性 | 描述 | 限制 |
---|---|---|
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 个字节组成。该值的语法与 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 输出中。特别是,样式值 filled
、rounded
、diagonals
和 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]⁺ ')'
其中 xⱼ yⱼ rⱼ(对于 j=0,1)指定起点和终点圆的中心和半径,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 添加删除线位 |
>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"];
}