GraphViz:给定一个 .dot 文件,如何计算节点统计信息?
GraphViz: Given a .dot file, how to compute node statistics?
给定图形的 .dot 表示,我希望能够编译有关每个节点的一些统计信息。统计数据可以是:# of edges,# of levels,# of nodes。
是否有可用的软件包让我执行此操作?
是的,这是开箱即用的 graphviz。
可以通过将图表输入 gc
- 计算图表组件:
来获得有关图表的一般统计信息
gc (...) prints to standard output the number of nodes, edges, connected
com- ponents or clusters contained in the input files.
如果您想生成有关图表的更具体的统计信息,可以使用工具 gvpr
- 图表模式扫描和处理语言.
gvpr
允许对您的图形执行自定义脚本。该脚本可能会像您的情况一样简单地收集自定义统计信息,或者它甚至可能会修改输入图。
上面链接的文档非常完整,对所有可用的属性和功能的解释比我在这里做得更好。下面只是一个简单的示例,可以帮助您入门。
如果我们有下图graph.gv
:
digraph graphinfotest {
a -> {b; c; d} -> e;
b -> c;
}
以下 gvpr
脚本(在文件 graphinfo.gvpr
中):
BEG_G {
int n = nNodes($G);
int e = nEdges($G);
printf("There are %d nodes and %d edges in %s\n", n, e, $G.name);
}
N {
printf("Node %s - indegree %d, outdegree %d\n", $.name, $.indegree, $.outdegree);
}
调用
gvpr -f graphinfo.gvpr graph.gv
将产生以下输出:
There are 5 nodes and 7 edges in graphinfotest
Node a - indegree 0, outdegree 3
Node b - indegree 1, outdegree 2
Node c - indegree 2, outdegree 1
Node d - indegree 1, outdegree 1
Node e - indegree 3, outdegree 0
给定图形的 .dot 表示,我希望能够编译有关每个节点的一些统计信息。统计数据可以是:# of edges,# of levels,# of nodes。
是否有可用的软件包让我执行此操作?
是的,这是开箱即用的 graphviz。
可以通过将图表输入 gc
- 计算图表组件:
gc (...) prints to standard output the number of nodes, edges, connected com- ponents or clusters contained in the input files.
如果您想生成有关图表的更具体的统计信息,可以使用工具 gvpr
- 图表模式扫描和处理语言.
gvpr
允许对您的图形执行自定义脚本。该脚本可能会像您的情况一样简单地收集自定义统计信息,或者它甚至可能会修改输入图。
上面链接的文档非常完整,对所有可用的属性和功能的解释比我在这里做得更好。下面只是一个简单的示例,可以帮助您入门。
如果我们有下图graph.gv
:
digraph graphinfotest {
a -> {b; c; d} -> e;
b -> c;
}
以下 gvpr
脚本(在文件 graphinfo.gvpr
中):
BEG_G {
int n = nNodes($G);
int e = nEdges($G);
printf("There are %d nodes and %d edges in %s\n", n, e, $G.name);
}
N {
printf("Node %s - indegree %d, outdegree %d\n", $.name, $.indegree, $.outdegree);
}
调用
gvpr -f graphinfo.gvpr graph.gv
将产生以下输出:
There are 5 nodes and 7 edges in graphinfotest
Node a - indegree 0, outdegree 3
Node b - indegree 1, outdegree 2
Node c - indegree 2, outdegree 1
Node d - indegree 1, outdegree 1
Node e - indegree 3, outdegree 0