在 python 中可视化基于代理的模型模拟的最佳包选择

计算科学 Python 可视化 VTK
2021-12-15 01:58:29

这是一个可视化/编程设计问题。我正在构建一个基于地理空间代理的模型,这意味着在某个特定的空间容器中有多个代理交互。代理的运动及其交互基于一些有偏的随机游走和积分微分方程。考虑到一些技术限制,我试图弄清楚使用哪个包来可视化这一点。我用python编写了模型原型,但问题就在这里。

我需要一种方法来可视化这些代理之间的交互随着时间的推移。我看了看matplotlib,但是当我添加多个代理时,动画功能会遇到麻烦。我相信在matplotlib网站本身上,作者指出 matplotlib 动画甚至还没有准备好用于中等规模。

我想保持开源——而且是免费的。其他选择似乎是使用 VTK 的 Mayavi。我过去曾使用过它,但不确定 Mayavi 可以如何处理可视化相当数量的代理——比如 100 到 1000 之间。我也不确定 Mayavi 的维护有多积极。

Vispy 是另一种选择。这也是一个非常新的库,所以我不确定它有多稳定。它依赖于 WebGL 的接口。我不确定这是否是一个不错的选择,因为没有多少人有使用它的经验——在 Vispy 上还没有那么多博客文章。

最后,python 中还有一些其他的硬核数学可视化库,例如有限元求解器:Fenics 或其他。但我没有这些方面的经验,所以不确定它们是否可以更好地解决这个特定问题。

如果我缺少任何选择,请提出建议。

附加说明:

我看过 Netlogo 和 Repast 等基于代理的建模软件。我真的不想使用这些,因为它们似乎对可视化和建模选择施加了很多限制——我必须学习另一种语言: )。

更新:

这是来自 Vispy google 小组的关于 VTK 和 mayavi 的注释。

"Mayavi is based on VTK, an old and big library which uses legacy OpenGL 
(fixed function pipeline). Mayavi itself is mostly written in C++, and 
has trouble attracting contributors. . . . the lead developer has said 
its dying a slow death. 

Vispy uses modern opengl and is implemented all the way in Python. It 
only relies on one of several backends to provide a window to render in. 
This makes Vispy more powerful (we can make use of more advanced 
shaders) and flexible. Mayavi and VTK have been around for quite a while 
though, so it will take some time for Vispy to match the functionality. "
0个回答
没有发现任何回复~