【发布时间】:2018-12-01 13:57:34
【问题描述】:
我有一个大的 Graphviz 文件,我在其中将不同的节点和边放在不同的层上。多个节点组成一个子图集群。
这使得关注图表中重要的特定部分变得很容易,但是我现在想将每一层自动提取到自己的 DOT 文件中。
我一直在使用gvpr -i 'N[layer=="(*a*)"]' source.gv > a.gv,它通过提取节点和边来实现我想要的,但是它无法提取子图,所以我失去了节点的上下文。
以源图为例:
digraph {
layers = "a:b";
layerselect = "";
subgraph cluster_alpha {
label = "Alpha";
a, b, c [layer = "a"];
}
subgraph cluster_beta {
label = "Beta";
d, e, f [layer = "b"];
}
g [layer = "a"];
h [layer = "b"];
g -> a [layer = "a"];
h -> e [layer = "b"]
}
运行 gvpr -i 'N[layer=="(*a*)"]' source.gv > a.gv 会产生以下输出:
digraph gvpr_result {
graph [layers="a:b:c",
layerselect=""
];
a [layer=a];
b [layer=a];
c [layer=a];
g [layer=a];
g -> a [layer=a];
}
如果您比较输出,您会看到节点“a”、“b”和“c”周围的框以及标签“Alpha”缺失。
关于如何使用gvpr 也可以输出子图集群,或其他将给定层的节点、边和子图输出到 DOT 文件的策略有什么建议吗?
提前感谢您的任何提示。
【问题讨论】:
标签: graphviz layer dot subgraph