看看Graphviz,这是一套图形布局工具和库,许多其他程序都使用它来绘制图形,例如 Doxygen 和 KCacheGrind。
您可以将其用作库来链接;或者写出一个文件,调用可执行文件来处理它并读回文件。第二种(文件写入/处理/读取)方法是最常用的。
为此,您:
- 以点格式(一种简单的文本格式)写出图形(您的 FSM)。
- 使用输出格式调用
dot
(graphviz 工具之一)dot
,这会将布局信息附加到文件中
- 读回点文件并使用位置信息
有几个库可以做到这一点,包括 Python,请参阅pydot。