Awk 如何获得可重复的graphviz布局?

Awk 如何获得可重复的graphviz布局?,awk,sed,sh,graphviz,macports,Awk,Sed,Sh,Graphviz,Macports,我正在开发一个脚本,可以突出显示MacPorts软件包管理器在OS X下安装的软件包之间的依赖关系。该脚本使用一个可选参数来突出显示一个软件包以及图形中依赖它的所有内容。当我更改指定的包时,图形的整个布局都会更改。我想做的是使用点突出显示不同的包,这样我就可以在两个图之间来回切换,并显示两个不同的依赖项和包安装前后的更改,以说明包树如何更改为其他包 在自动构造.gv文件期间,我需要指定什么来确保在指定另一个突出显示的包时位置不会更改 代码位于GitHub上: 这方面的一个例子是调用脚本以突出显

我正在开发一个脚本,可以突出显示MacPorts软件包管理器在OS X下安装的软件包之间的依赖关系。该脚本使用一个可选参数来突出显示一个软件包以及图形中依赖它的所有内容。当我更改指定的包时,图形的整个布局都会更改。我想做的是使用点突出显示不同的包,这样我就可以在两个图之间来回切换,并显示两个不同的依赖项和包安装前后的更改,以说明包树如何更改为其他包

在自动构造.gv文件期间,我需要指定什么来确保在指定另一个突出显示的包时位置不会更改

代码位于GitHub上:


这方面的一个例子是调用脚本以突出显示repo中“examples”目录中jpeg和tiff上的相关性。比较其中的两个PDF,以查看示例中shell脚本中两个调用之间的结构如何变化。

据我所知,
graphviz
本身无法做到这一点。理论上,您需要两个图作为输入,这样您就可以识别两个图共用的节点,以及一个图特有的节点。根据这些信息,您将需要串联生成两个布局,以便可以将公共节点放置在一个公共的固定位置,而不会干扰两个图中唯一节点的放置。这是一个相当棘手的优化问题。在多层图中,将每个包设为一层。(请参阅层属性的文档,并注意postscript(可能还有pdf)是唯一有用的输出格式。我知道的最后一种格式,
graphviz
本身无法做到这一点。理论上,您需要两个图作为输入,这样您就可以识别两个图共用的节点,以及一个图特有的节点。根据这些信息,您将需要串联生成两个布局,以便可以将公共节点放置在一个公共的固定位置,而不会干扰两个图中唯一节点的放置。这是一个相当棘手的优化问题。在多层图中,将每个包设为一层。(请参阅层属性的文档,并注意postscript(可能还有pdf)是唯一有用的输出格式。