graphviz-比较图形树

graphviz-比较图形树,graphviz,emf-compare,Graphviz,Emf Compare,我得和graphviz合作。我需要可视化几个树的图形表示,但在任何情况下,我都必须比较两棵树以查看它们的差异:类似这样,我有树A和树B。在创建它们的表示并比较它们之后,我只需要查看没有共同点的节点。有人告诉我使用EMF Compare,但不幸的是,我不知道如何让这个插件接受graphviz的扩展 面对这份工作有什么建议或其他可能的解决方案吗 关于。给定两个.dot文件,a1.dot: digraph g1 { A -> B -> D -> E A -> C

我得和graphviz合作。我需要可视化几个树的图形表示,但在任何情况下,我都必须比较两棵树以查看它们的差异:类似这样,我有树A和树B。在创建它们的表示并比较它们之后,我只需要查看没有共同点的节点。有人告诉我使用EMF Compare,但不幸的是,我不知道如何让这个插件接受graphviz的扩展

面对这份工作有什么建议或其他可能的解决方案吗


关于。

给定两个
.dot
文件,
a1.dot

digraph g1 {
    A -> B -> D -> E
    A -> C -> E
    }
digraph g2 {
    A -> B -> F -> E
    A -> C -> F
    }
。。。和
a2.dot

digraph g1 {
    A -> B -> D -> E
    A -> C -> E
    }
digraph g2 {
    A -> B -> F -> E
    A -> C -> F
    }
。。。您可以找到它们之间不同的节点,如下所示:

$ 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
$dot-Tplain a1.dot|sed-ne的/^node\([^]\+\).$/\1/p'| sort>a1.nodes
$dot-Tplain a2.dot | sed-ne的/^node\([^]\+\).$/\1/p'| sort>a2.nodes
$diff a1.nodes a2.nodes
4d3
F

我使用
sed
dot
输出的
plain
中删除每个
.dot
文件的节点名列表,将节点按顺序排序,然后使用
diff
查找差异。这种方法不会以图形方式显示差异,但在最好的情况下,这是一件棘手的事情

我不熟悉graphviz,所以我不知道这是否可以做到。。。从graphviz到EMF(EMF Compare使用的底层建模技术)的导出,快速谷歌搜索并没有得到任何结果。EMF Compare允许您比较EMF模型:在比较之前,您需要一种将graphviz图形表示为此类模型的方法。是的,Kellindil,这是另一个问题。我找不到如何从graphviz创建模型并将其与EMF模型一起使用。这就是为什么我决定写这个问题,因为我对如何面对这个问题没有任何其他想法。不过还是要谢谢你。老兄,非常感谢你的把戏,事实上,这可能对我的工作很有用。自从我回答了你的问题后,我一直在思考如何以图形方式显示差异,我认为应该可以通过显示合并的图形和着色,或者以其他方式对每个节点进行不同的注释,取决于这两个图是共用的,仅在图1中还是仅在图2中。如果您对这个图形解决方案感兴趣,我可以探索一下。大致上,我会从我在回答中采用的方法开始,创建一个合并图,然后使用
diff
作为脚本的输入,该脚本为原始图之间不同的节点添加不同的节点属性。@Simon您曾经构建过您在这里讨论的可视比较模式吗?