我有一个随机过程的数据(由我为其编写的算法生成),该随机过程由有限空间上的合并和分支随机游走组成,我想使用 python 以及可能来自 matplotlib 的东西进行可视化。
数据如下:
当某些事情发生变化时(步行到一个空位,与另一个粒子合并或一个新粒子诞生),列出了过程的状态列表,所以类似这样的事情(假设过程继续存在) {0,1,2,3,4}:
[[0,1,2,0,2],...,[1,0,2,2,0]]
,所以一开始我从这个过程开始位置 1,2 和 4 处的粒子(有两种不同类型的粒子,因此“1”表示存在第一种类型,“2”表示第二种类型,整个“0”表示不存在)
我还有改变流程的事件列表,因此是以下形式的列表列表
[place,time,type]
所以我知道在何时何地发生了什么(这对应于在图形表示中写入适当的标记,例如,如果事件是粒子向左移动,则向左的箭头)。
我写了这样的东西:
import pylab as P
P.plot(-spacebound,0,spacebound,maxtime)
while something in the process:
current=listofevents.pop(0)
for i that are nonempty at current time:
P.arrow() in a way corresponding to the data
P.show()
这可行,但速度非常慢,因此如果我有一个大流程,则需要花费大量时间来进行可视化(而对于相当极端的参数,生成流程数据最多需要几秒钟 - 一个很大的空间、时间和高粒子诞生率,这意味着很多事件经常改变过程)。
我很确定使用这样的箭头是非常愚蠢的,但因为到目前为止我只在 R 中可视化了东西(我当然可以简单地从 python 导出数据并在 R 中可视化它们,但我想避免这种情况)我对用 Python 做这件事也很陌生。
我尝试了一些谷歌搜索,发现了 matplotlib 并查看了那里的一些教程,除了箭头之外,我还尝试通过循环 plt.scatter() 来可视化进程的状态(没有事件)
覆盖所有状态,但是虽然速度稍快一些,但仍然非常慢,而且看起来很困惑。
那么我该如何以合理的方式绘制它呢?即使是“学习如何正确地用 Python 进行绘图”之类的链接也可以作为答案。谢谢!
最佳答案
matplotlib 不适用于交互式绘图。它用于生成文章质量的图。对于交互式绘图,您可以尝试使用 Chaco 或其他库。 Chaco 的理念是创建一个图并将其与数据联系起来。当您更新数据时,您的图表会自动更新。
关于python - Python 中的高效可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33149362/