python - Python 中的高效可视化

标签 python matplotlib plot probability-theory

我有一个随机过程的数据(由我为其编写的算法生成),该随机过程由有限空间上的合并和分支随机游走组成,我想使用 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/

相关文章:

Python-for语句理解

python - 我可以使用 Django 来防止直接访问图像文件吗?

python - 如何将 CMA-ES 优化应用于 Python 中的任意用户定义的目标函数?

python - 具有多个 y 轴的误差条图会产生 ValueError

r - 在ggplot中绘制置信区间

r - ggplot2条形图中的刻度标签

python-3.x - Python中存在数值数据时如何解决TypeError : 'No Numeric Data to Plot' ,

python - 从 `code.interact()` 之类的 Python shell 使用 IPython

python - 匹配两个列表的键名和值

python - 如何在不从下到上对值进行排序的情况下更改绘图轴 (yaxis)