Graphviz DOT 文件中的多个图形
Multiple graphs inside Graphviz DOT file
我有这个 Graphviz DOT 图:
digraph unit_test {
label="Unit test"
edge [fillcolor="#a6cee3" color="#1f78b4"]
node[shape="ellipse" style="filled" fillcolor="#1f77b4"]
start
end
node[shape="box" style="filled" fillcolor="#ff7f0e"]
process
subgraph cluster_process {
label = "Major logic"
process
}
start -> process
process -> end
}
以上呈现为:
我有第二张图:
digraph details {
label = "Process details"
edge [fillcolor="#a6cee3" color="#1f78b4"]
node[shape="ellipse" style="filled" fillcolor="#1f77b4"]
start
end
node[shape="box" style="filled" fillcolor="#ff7f0e"]
details
subgraph cluster_details {
label = "Details"
details
}
start -> details
details -> end
}
渲染到:
问题
当我将以上两个图表放入同一个名为 supporting.dot
的 DOT 文件中并使用 运行 dot -Tpng -o supporting.png supporting.dot
命令时,终端会打印出一些乱码并且输出图像文件不会包含两个图,它只包含第一个图。是否可以在单个 DOT 文件中使用多个图形?如果是这样,我错过了什么?
问题不清楚要完成什么,但也许以下是一个起点
digraph G{
subgraph unit_test {
label="Unit test"
edge [fillcolor="#a6cee3" color="#1f78b4"]
node[shape="ellipse" style="filled" fillcolor="#1f77b4"]
start
end
node[shape="box" style="filled" fillcolor="#ff7f0e"]
process
subgraph cluster_process {
label = "Major logic"
process
}
start -> process
process -> end
}
subgraph details {
label = "Process details"
edge [fillcolor="#a6cee3" color="#1f78b4"]
node[shape="ellipse" style="filled" fillcolor="#1f77b4"]
start1 [label="start"]
end1 [label="end"]
node[shape="box" style="filled" fillcolor="#ff7f0e"]
details
subgraph cluster_details {
label = "Details"
details
}
start1 -> details
details -> end1
}
}
注意第二个子图中的命名/标签。
Dot 无法将 2 个图形渲染到一个文件中,您看到的输出可能是其中一个图形的 png 内容。
为了防止这种情况,您可以先通过 gvpack 运行 您的图表 - 类似于:
gvpack -u supporting.dot | dot -Tpng -o supporting.png
这会将 supporting.dot
中的所有图表组合成一个图表,然后用 dot
渲染。
图表的布局可能会受到 gvpack 的更多选项的影响。
在一个输入文件中定义多个图形是合法的。然后,您可以使用 -O 选项生成多个输出文件,如下所示:
dot -Tpng -O multi.gv
这将产生 multi.gv.png 和 multi.gv。2.png
我有这个 Graphviz DOT 图:
digraph unit_test {
label="Unit test"
edge [fillcolor="#a6cee3" color="#1f78b4"]
node[shape="ellipse" style="filled" fillcolor="#1f77b4"]
start
end
node[shape="box" style="filled" fillcolor="#ff7f0e"]
process
subgraph cluster_process {
label = "Major logic"
process
}
start -> process
process -> end
}
以上呈现为:
我有第二张图:
digraph details {
label = "Process details"
edge [fillcolor="#a6cee3" color="#1f78b4"]
node[shape="ellipse" style="filled" fillcolor="#1f77b4"]
start
end
node[shape="box" style="filled" fillcolor="#ff7f0e"]
details
subgraph cluster_details {
label = "Details"
details
}
start -> details
details -> end
}
渲染到:
问题
当我将以上两个图表放入同一个名为 supporting.dot
的 DOT 文件中并使用 运行 dot -Tpng -o supporting.png supporting.dot
命令时,终端会打印出一些乱码并且输出图像文件不会包含两个图,它只包含第一个图。是否可以在单个 DOT 文件中使用多个图形?如果是这样,我错过了什么?
问题不清楚要完成什么,但也许以下是一个起点
digraph G{
subgraph unit_test {
label="Unit test"
edge [fillcolor="#a6cee3" color="#1f78b4"]
node[shape="ellipse" style="filled" fillcolor="#1f77b4"]
start
end
node[shape="box" style="filled" fillcolor="#ff7f0e"]
process
subgraph cluster_process {
label = "Major logic"
process
}
start -> process
process -> end
}
subgraph details {
label = "Process details"
edge [fillcolor="#a6cee3" color="#1f78b4"]
node[shape="ellipse" style="filled" fillcolor="#1f77b4"]
start1 [label="start"]
end1 [label="end"]
node[shape="box" style="filled" fillcolor="#ff7f0e"]
details
subgraph cluster_details {
label = "Details"
details
}
start1 -> details
details -> end1
}
}
注意第二个子图中的命名/标签。
Dot 无法将 2 个图形渲染到一个文件中,您看到的输出可能是其中一个图形的 png 内容。
为了防止这种情况,您可以先通过 gvpack 运行 您的图表 - 类似于:
gvpack -u supporting.dot | dot -Tpng -o supporting.png
这会将 supporting.dot
中的所有图表组合成一个图表,然后用 dot
渲染。
图表的布局可能会受到 gvpack 的更多选项的影响。
在一个输入文件中定义多个图形是合法的。然后,您可以使用 -O 选项生成多个输出文件,如下所示:
dot -Tpng -O multi.gv
这将产生 multi.gv.png 和 multi.gv。2.png