4

我想用一个绘图对象从一个 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 个粒子。

非常感谢

4

2 回答 2

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-')
于 2013-10-16T22:32:20.507 回答
3

您可以将列表解压缩为一系列参数。如果'y-'对你来说不是那么重要,这将起作用。

p, = ax.plot(*position)

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

p, = ax.plot(*position, linestyle = 'dashed', color = 'yellow')
于 2013-10-16T19:38:33.287 回答