2015-10-15 59 views
1

我有一个随机过程的数据(由我为它写的一个算法生成),它包括在有限空间上合并和分支随机游走,我想用python可能看到并可能来自matplotlib。Python中的高效可视化

的数据是这样的:

的在时间过程中的状态列表的清单时,有新的变化(步行移动到的空白点,聚结,与另外一个或一个新的粒子出生),所以像这样的事情(假设过程生活在{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中这样做也很绿。

我尝试了一些Google搜索,发现了关于matplotlib,并在那里看了一些教程,除了箭头,我还尝试通过在所有状态中循环plt.scatter()来直观显示过程的状态(没有事件)速度稍快,但仍然非常缓慢,而且看起来很乱。

那么我该如何以合理的方式绘制这个图?作为答案,甚至可以链接到“学习用Python做阴谋”这样的东西。谢谢!

+0

请更新您的问题以包含实际问题。 :) –

回答

3

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