0

所以我有一项特殊的任务需要帮助,但我不知道该怎么做。我有一个在一组固定的网络节点之间形成联系的模型。所以我想设置一个窗口或可视化来显示某种二维或三维网格上的所有节点集。然后对于每个时间步,我想用节点之间的最新关系更新可视化窗口。因此,我将从位于空间中的一组节点开始,然后随着每个时间步长,可视化将逐渐添加新的边。

这里的挑战是我知道在networkx之类的东西中,在每个时间步重绘网络是行不通的。很多常见的网络显示算法都是随机放置节点,以使节点之间的距离最大化,更好地显示边缘。因此,如果我在每个时间步重新绘制网络,节点每次都会位于不同的位置,并且很难识别网络增长的模式。这就是我想要一组静态节点的原因,这样我就可以看到边是如何在每个时间步添加的。

我希望一次可视化大约 100 个节点。所以我会从20个左右的少量节点开始,逐步建立到100个节点。验证模型后,我将构建多达 1000 或 2000 个节点。当然,很难可视化 1000 或 2000 个节点的网络,这就是为什么我只想确保在模拟中只有 100 个节点时可以可视化网络。

我不确定是否可以在 webgl 或其他东西中执行此操作,或者是否有在 python 中执行此操作的好方法。如果需要,我可以使用 Vispy 在 python 和 webgl 之间进行通信。

4

1 回答 1

0

这看起来确实是 Vispy 的一个很好的用例。您需要对节点使用 PointVisual,对边缘使用 LineVisual。然后,您可以在执行模拟时实时更新边缘。

动画也可以在带有 WebGL 的 IPython notebook 中工作。

请注意,如果您为节点指定静态位置,其他图形工具包也可能对您有用(尽管您不一定需要通过 OpenGL 进行 GPU 加速)。我认为您可以使用 d3js 或 networkx 来修复节点位置,而不是依赖自动布局算法。

于 2014-12-02T21:23:46.200 回答