我想用一个绘图对象绘制一个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个粒子。
非常感谢
答案 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-')