使用从一个数组中提取的值绘制多个图形

时间:2017-02-27 13:52:23

标签: python numpy plot graph

我有一个numpy数组,让我们说一个有4行和6(总是偶数)列:

m=np.round(np.random.rand(4,6))

array([[ 0.99,  0.48,  0.05,  0.26,  0.92,  0.44],
   [ 0.81,  0.54,  0.19,  0.38,  0.5 ,  0.02],
   [ 0.11,  0.96,  0.04,  0.69,  0.78,  0.31],
   [ 0.5 ,  0.53,  0.94,  0.77,  0.6 ,  0.75]])

我现在想根据列对绘制图形,在本例中为

图1:x值= m [:,1]和y值= m [:,0]

图2:x值= m [:,3]和y值= m [:,2]

图3:x值= m [:,5]和y值= m [:,4]

前两列基本上是一对值,接下来的两列是另一对值,后两列也是一对值。

所有图表都应该在同一个图中!

我需要一个通用的解决方案来绘制这样的多个图形,并且数组的列数未定义但偶数。像循环一样!

希望有人可以帮助我:)

2 个答案:

答案 0 :(得分:0)

这给你指定的m arra带来了可怕的结果,但是如果它只是一个样本并且你的数据更加真实,那么下面应该这样做:

for i in range(m.shape[1] // 2):
    plt.figure()
    plt.plot(m[:, 2* i], m[:, 2 * i + 1])

如果你想要所有的图都在同一个图上,只需将plt.figure()移出循环:

plt.figure()

for i in range(m.shape[1] // 2):
    plt.plot(m[:, 2* i], m[:, 2 * i + 1])

答案 1 :(得分:0)

你可以循环列对的所有值

import matplotlib.pyplot
i=1
while i<len(m[0]):
    x = m[:,i]
    y = m[:,i-1]
    plt.plot(x,y)
    plt.savefig('placeholderName_%d.png' % i)
    plt.close()
    i=i+2

请注意,我从1开始,然后递增2。这符合你提出的例子