我有一个随机过程的数据(由我为它编写的算法生成),其中包括在有限空间上合并和分支随机游走,我想用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正确绘图”这样的东西也是一个答案。谢谢!
答案 0 :(得分:3)
matplotlib不适用于交互式绘图。它用于生成文章质量图。对于交互式图,您可以尝试使用Chaco或其他库。查科的意识形态是创建一个情节并将其与数据联系起来。当您更新数据时,您的图表会自动更新。