绘制起点和终点集中的线段

时间:2013-11-18 21:51:34

标签: python numpy matplotlib

假设您有一个形状为a的数组(n,2,2),其中包含n行segmenets的起点和终点坐标。如何绘制这些线段。我的代码不起作用,虽然它逐个元素地工作但不是一次全部工作。这是我的代码:

from matplotlib import pyplot as plt
import numpy as np
a=np.asarray([[[0,0],[1,1]],[[1,2],[2,3]],[[5,2],[2,6]],[[7,3],[5,9]]])
plt.plot(a[:,:,0],a[:,:,1])
plt.show()

我想得到的是: enter image description here 但是我的代码输出是: enter image description here 我该怎么纠正这个?

3 个答案:

答案 0 :(得分:2)

您只需转置数组:

plt.plot(a[:,:,0].T,a[:,:,1].T)

原因是matplotlib对二维数组a的轴的标准解释,其中a[i,j]意味着i - j的值{{1}} 1}} - 情节。

答案 1 :(得分:1)

诀窍似乎是转置,但我不明白为什么会这样!

from matplotlib import pyplot as plt
import numpy as np
a=np.asarray([[[0,0],[1,1]],[[1,2],[2,3]],[[5,2],[2,6]],[[7,3],[5,9]]])
X=a[:,:,0].T
Y=a[:,:,1].T
plt.plot(X,Y)
plt.show()

答案 2 :(得分:1)

另一种方法如下:

for aa in a:
    plt.plot(aa[:,0], aa[:,1])