我有一个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]
前两列基本上是一对值,接下来的两列是另一对值,后两列也是一对值。
所有图表都应该在同一个图中!
我需要一个通用的解决方案来绘制这样的多个图形,并且数组的列数未定义但偶数。像循环一样!
希望有人可以帮助我:)
答案 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。这符合你提出的例子