以graphviz(DOT)格式描述的图形的手动布局

时间:2016-04-26 16:47:20

标签: graphviz dot

我有一张图表,我已将其记录为DOT文件。我选择了这个,因为它很容易以编程方式进行读写,而且我有相当多的工具使用DOT文件作为输入。

Graphviz做得不错,但效果不是很好。 (就我所知,这就是它的真正意义所在。)

我正在寻找并找不到一个能在DOT文件中读取的工具,让我手动拖动我在DOT文件中描述的顶点和边缘,类似于https://www.draw.io

我真的不想做的事情是手动重新输入我已经写下的图形(或者作为程序或其他任何东西的输出计算)到draw.io中,然后有两个不同的文件可能或者由于转录错误,可能没有相同的边和顶点集。

理想情况下,我希望能够编写自己的文件,只显示关于绘制内容的元数据,而不会在DOT文件中添加一堆内容,这样我在那里使用的工具仍然有用,我仍然可以使用它作为一系列不同任务之间图表的统一表示。

2 个答案:

答案 0 :(得分:2)

您可以运行dot,以命令dot的形式请求输出为另一个dot -Tdot文件。 dot随后将计算布局,但不输出图形表示,而是将输出另一个dot文件,该文件的信息与输入的信息完全相同,另外还会添加布局信息作为其他属性。然后,您可以手动编辑布局信息,并再次通过dot运行布局信息,以获取图形表示。

如果您的工具可以正确处理dot文件,则它们应该能够处理具有布局属性的dot文件。

如果您希望使用WYSIWYG工具来帮助进行手工布局,请查看dotty

答案 1 :(得分:1)

当我想手动调整由点绘制的节点定位和边时,我已经完成了以下操作:

  • 告诉dot生成SVG图像: dot -Tsvg < graph_text.dot > output_image.svg
  • 使用SVG编辑器,例如InkscapeSketch(我用过的两个)来打开SVG

在可以处理SVG格式的图像编辑器中打开SVG时,图形中的每个节点和边缘都将是一个独立的可拖动组件。