在过去,我使用 Graphviz 来绘制图形。这是一个很好的小图工具。
但不幸的是,对于大图,Graphviz 真的很烂:
- 它总是越过显然可以在没有十字架的情况下绘制的边缘。
- 它叠加不同的文本,使它们不可读。
- 它没有可重用的样式(如 CSS),您需要在节点和边缘中一遍又一遍地重复相同的个性化设置。
- 如果用户想,只是说,交换两个节点的位置。为此,经常需要大量破解源文件,可能会在此过程中破坏图形的不相关部分。
- 很容易,为了在图形的一个孤立位置进行小的更改,Graphviz 在其他地方强制进行重大的重大更改,经常使试图说服它正确绘制它的工作时间无效。
- 它在图表中浪费了大量空间,同时在某些地方非常拥挤。
- 有时,一些边会形成非常曲折的路径来连接源节点和目标节点,具有奇怪的无用曲线和大量叠加的横向运行边。
- 它具有雪崩效应。图中某处的细微修改可能会扰乱 Graphviz 启发式算法,从而导致完全不同的图。
- 很多bug...
作为用户,我想要一些东西,我可以简单地:
- 定义节点是什么,可能带有要应用的样式。
- 说出边缘是什么,可能带有要应用的样式。
然后程序给出:
- 具有最少可能交叉次数的图。
- 非常对齐的节点很好。
我不想:
- 只是因为该工具太愚蠢以至于看不到它可以交换两个特定节点以删除交叉点,因此在输入上添加了很多技巧。
- 手动需要定位边和节点。
- 获得雪崩效应。
那么,什么是 Graphviz 的好替代品呢?我真的希望它是免费的。
注意:我不太关心应该输入图形的格式,只要我可以保存和编辑带有图形描述的文件(无论这种描述的语言是什么)。所以,绝对没有必要仍然使用点语言或类似的东西(事实上,我很乐意完全丢弃我的点文件,因为那里的黑客比实际的图形描述要多得多)。