Python 中的高效可视化
Efficient visualisation in Python
我有一个随机过程的数据(由我为其编写的算法生成),该随机过程由有限 space 上的合并和分支随机游走组成,我想使用 python 进行可视化可能还有来自 matplotlib 的东西。
数据如下所示:
A list of 列出了某些情况发生变化时过程的状态(步行移动到一个空点,与另一个合并或新粒子诞生),所以像这样的事情(假设过程住在 {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()
这行得通,但它非常慢,所以如果我有一个大过程,则需要花费大量时间来进行这种可视化(而生成过程数据最多需要几秒钟才能获得相当极端的参数 - a大 space、时间和高粒子诞生率,这意味着很多事件经常改变过程)。
我很确定使用这样的箭头是非常愚蠢的,但是因为到目前为止我只在 R 中可视化了东西(我当然可以简单地从 python 导出我的数据并在 R 中可视化它们但是我想避免这种情况)我在 Python.
中也很擅长这样做
我尝试了一些谷歌搜索,发现了 matplotlib 并查看了那里的一些教程,除了箭头之外,我还尝试通过在所有状态,但是虽然这稍微快一点,但它仍然非常慢,而且看起来也很乱。
那么我该如何以合理的方式绘制它呢?即使是 link 到 "learn to do plotting in Python properly" 之类的答案也欢迎。谢谢!
matplotlib 不适用于交互式绘图。它用于生成文章质量图。对于交互式图,您可以尝试使用 Chaco 或其他库。 Chaco 的思想是创建一个图,然后 link 将其与数据结合起来。当您更新数据时,您的图表会自动更新。
我有一个随机过程的数据(由我为其编写的算法生成),该随机过程由有限 space 上的合并和分支随机游走组成,我想使用 python 进行可视化可能还有来自 matplotlib 的东西。
数据如下所示:
A list of 列出了某些情况发生变化时过程的状态(步行移动到一个空点,与另一个合并或新粒子诞生),所以像这样的事情(假设过程住在 {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()
这行得通,但它非常慢,所以如果我有一个大过程,则需要花费大量时间来进行这种可视化(而生成过程数据最多需要几秒钟才能获得相当极端的参数 - a大 space、时间和高粒子诞生率,这意味着很多事件经常改变过程)。
我很确定使用这样的箭头是非常愚蠢的,但是因为到目前为止我只在 R 中可视化了东西(我当然可以简单地从 python 导出我的数据并在 R 中可视化它们但是我想避免这种情况)我在 Python.
中也很擅长这样做我尝试了一些谷歌搜索,发现了 matplotlib 并查看了那里的一些教程,除了箭头之外,我还尝试通过在所有状态,但是虽然这稍微快一点,但它仍然非常慢,而且看起来也很乱。
那么我该如何以合理的方式绘制它呢?即使是 link 到 "learn to do plotting in Python properly" 之类的答案也欢迎。谢谢!
matplotlib 不适用于交互式绘图。它用于生成文章质量图。对于交互式图,您可以尝试使用 Chaco 或其他库。 Chaco 的思想是创建一个图,然后 link 将其与数据结合起来。当您更新数据时,您的图表会自动更新。