问题描述
我必须用graphviz做事.我需要可视化几棵树的图形表示形式,但是无论如何我都必须比较两棵树以查看它们之间的差异:像这样,我有树A和树B.创建它们的表示并进行比较之后,我只需要查看没有共同点的节点.有人告诉我使用EMF Compare,但不幸的是,我不知道如何使该插件接受graphviz的扩展.
I have to do a job with graphviz. I need to visualize the graphic representation of several trees, but in any case I have to compare two tree to see their differences: something like this, I have tree A and tree B. After create their representation and compare them I need to see only the nodes that don't have in common. Someone told me to use EMF Compare but unfortunately I don't know how to make this plugin accept the extension of graphviz.
有什么建议或其他可能的解决方案来应对这项工作吗?
Any advice or any other possible solution to face this job?
致谢.
推荐答案
给出两个.dot
文件a1.dot
:
digraph g1 {
A -> B -> D -> E
A -> C -> E
}
...和a2.dot
:
digraph g2 {
A -> B -> F -> E
A -> C -> F
}
...您可以找到它们之间不同的节点,如下所示:
... you can find the nodes that are different between them as follows:
$ dot -Tplain a1.dot | sed -ne 's/^node \([^ ]\+\).*$/\1/p' | sort >a1.nodes
$ dot -Tplain a2.dot | sed -ne 's/^node \([^ ]\+\).*$/\1/p' | sort >a2.nodes
$ diff a1.nodes a2.nodes
4d3
< D
5a5
> F
我正在使用sed
从dot
的plain
输出中剥离每个.dot
文件的节点名称列表,将节点按顺序排序,然后使用diff
查找差异.这种方法不能以图形方式显示差异,但是在最佳情况下这样做是一件棘手的事情.
I'm using sed
to strip the list of node names for each .dot
file out of the plain
output from dot
, sorting the nodes into order and then using diff
to find the differences. This approach doesn't present the differences graphically, but that is a tricky thing to do at the best of times.
这篇关于graphviz-比较图形树的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!