1

我有一个随机过程的数据(由我为它编写的算法生成),该过程由有限空间上的合并和分支随机游走组成,我想使用 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 中绘图”之类的链接也欢迎作为答案。谢谢!

4

1 回答 1

3

matplotlib 不适用于交互式绘图。它用于生成文章质量图。对于交互式绘图,您可以尝试使用 Chaco 或其他库。Chaco 的思想是创建一个情节并将其与数据联系起来。当您更新数据时,您的图表会自动更新。

于 2015-10-15T13:13:42.783 回答