如何可视化分层图(用于 GraphPlan 规划算法)

How to visualize a layered graph (for GraphPlan planning algorithm)

我做了一个快速的网络搜索,但没有找到现成的(和图书馆提供的)解决方案,我认为这是一个明确规定和相当标准的可视化问题,决定自己快速实施。不过,在这样做之前,我想从社区获得理智建议。

我需要可视化一种非常具体的图形(这就是为什么我不想处理任何难以阅读的力导向通用布局),它看起来像是多方图的一个版本用于 GraphPlan 规划算法。

对于那些不熟悉的人,典型的布局与多层神经网络的布局基本相同:

为简单起见,我只考虑偶数层(因为奇数层基本上会成为边缘标签)

在这一点上,将节点列简单地表示为 table 和 tabulate 就足够了。唯一的问题是我还需要反向指针(即边缘)。

我正在考虑 matplotlib 网格的方向,但不想太低级。毕竟,我只需要连接此网格中 strictly 相邻列中的任意项。确实很简单。

结果并不太糟糕:

基本上:

  1. 将我的 objects 存储在二维数组中
  2. 为散点图网格生成 Xs 和 Ys(需要额外注意通过 zip(*izip_longest(*my2darray)) 技巧处理可变列高度)
  3. 遍历我的二维数组元素以提取它们的标签
  4. 他们每个人还从上一列中为他们的每个 children 绘制了线段。