从一个numpy数组中绘制多条曲线

时间:2013-10-16 19:35:46

标签: python numpy matplotlib

我想用一个绘图对象绘制一个numpy数组中的几条曲线。 该数组的格式如下:

position=np.array([[x11,x12,...,x1n],[y11,...,y1n],[x21,...,x2n],[y21,...],...])

它应该像下面的代码一样:

import matplotlib.pyplot as plt
import numpy as np

position=np.load("position.npy")

fig=plt.figure()
ax=fig.add_subplot(111,aspect='equal',autoscale_on=False)
p,=ax.plot(position[0],position[1],'y-',position[2],position[3],'y-',...)

但我需要最后一行来像这样:

p,=ax.plot(position)

我不能写下plot命令中的每个位置[i]。有没有办法做到这一点,例如具有某个数组形状或绘图对象的任何其他参数? 我需要这个在动画中绘制几个轨迹,其中(xni,yni)将是时间i的第n个粒子。

非常感谢

2 个答案:

答案 0 :(得分:3)

您可以将列表解压缩为一系列参数。如果'y-'对你来说不重要,那就行了。

p, = ax.plot(*position)

如果要添加适用于列表中所有元素的修饰符,请使用关键字参数

p, = ax.plot(*position, linestyle = 'dashed', color = 'yellow')

答案 1 :(得分:3)

matplotlib.pyplot.plot(*args, **kwargs)的文档说If x and/or y is 2-dimensional, then the corresponding columns will be plotted,因此您可以将x和y值切片出position数组:

x = position[::2,:].T 
y = position[1::2,:].T
p,=ax.plot(x, y,'y-')