使用matplotlib

时间:2016-12-05 09:17:46

标签: python numpy matplotlib

我在使用matplotlib绘制某些东西的路径时遇到了一些麻烦。 这是我正在做的事情的基本版本。

基本上,我在路径中的任何一点看到该值是否会破坏某个阈值(在这种情况下为6),然后再对其进行处理。

现在,我有3个列表设置。 end_vector将基于另外两个列表。如果在单次模拟过程中任意值超过2,我会将对象的最后位置添加到end_vector

trajectories_vect是我希望通过保留列表列表来跟踪所有5个模拟的轨迹。我将在下面澄清这一点。并且,timestep_vect存储单个模拟的路径。

from random import gauss
from matplotlib import pyplot as plt
import numpy as np

starting_val = 5
T = 1                   #1 year
delta_t = .1            #time-step
N = int(T/delta_t)      #how many points on the path looked at
trials = 5              #number of simulations

#main iterative loop
end_vect = []
trajectories_vect = []
for k in xrange(trials):
    s_j = starting_val
    timestep_vect = []
    for j in xrange(N-1):
        xi = gauss(0,1.0)
        s_j *= xi
        timestep_vect.append(s_j)
    trajectories_vect.append(timestep_vect)
    if max(timestep_vect) > 5:
        end_vect.append(timestep_vect[-1])
    else:
        end_vect.append(0)

好吧,在这部分,如果我打印我的轨迹,我得到这样的东西(我只发布了两个模拟,而不是完整的5个):

[[ -3.61689976e+00   2.85839230e+00  -1.59673115e+00   6.22743522e-01
1.95127718e-02  -1.72827152e-02   1.79295788e-02   4.26807446e-02
-4.06175288e-02]  [  4.29119818e-01   4.50321728e-01  -7.62901016e-01
-8.31124346e-02 -6.40330554e-03   1.28172906e-02  -1.91664737e-02
-8.29173982e-03 4.03917926e-03]]

这很好,我想要发生。

现在,我的问题是我不知道如何正确地绘制我的路径(y轴)与我的时间(x轴)。

首先,我想将我的数据放入numpy数组中,因为我以后需要使用它们来计算一些统计数据和其他来自体验numpy的东西非常容易。

 #creating numpy arrays from list
 #might need to use this with matplotlib somehow
 np_trajectories = np.array(trajectories_vect)
 time_array = np.arange(1,10)

这是问题的症结所在。当我将我的轨迹(y轴)放入matplotlib时,它不会处理每个"列表" (在numpy中排)作为一条路径。我没有为5次模拟获得5条路径,而是为5次模拟获得9条路径。我相信我输错的东西因此错误地使用了9个时间间隔。

 #matplotlib stuff
 plt.plot(np_trajectories)
 plt.xlabel('timestep')
 plt.ylabel('trajectories')
 plt.show()

这是产生的图像:

enter image description here

显然,由于上述原因,这是错误的。相反,我希望根据轨迹中的5个列表(行)有5条路径。我似乎明白问题是什么,但不知道如何修复它。

提前感谢您的帮助。

0 个答案:

没有答案