Python 从起点和端点集打印线段

Python 从起点和端点集打印线段,python,numpy,matplotlib,Python,Numpy,Matplotlib,假设您有一个数组a,其形状(n,2,2),由n直线分段的起点和终点坐标组成。如何绘制这些线段。我的代码不能工作,尽管它可以一个元素一个元素地工作,但不能一次完成全部工作。这是我的密码: 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]) p

假设您有一个数组
a
,其形状
(n,2,2)
,由
n
直线分段的起点和终点坐标组成。如何绘制这些线段。我的代码不能工作,尽管它可以一个元素一个元素地工作,但不能一次完成全部工作。这是我的密码:

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()
我想得到的是: 但是,我的代码输出是:
我该如何纠正这一点呢?

这个技巧似乎是换位的,尽管我不明白为什么会这样

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()

虽然我不明白为什么会这样,但这个技巧似乎是换位的

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()

另一种方法是:

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

另一种方法是:

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

您只需转置阵列:

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

原因是
matplotlib
s对二维数组
a
轴的标准解释,其中
a[i,j]
j
-th图的
i
-th值。

您只需转置数组:

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

原因是
matplotlib
s二维数组
a
轴的标准解释,其中
a[i,j]
是指
j
-th绘图的
i
-th值。

对于大量线段来说,For的成本非常高。对于大量线段来说,For的成本非常高。同时查看
LineCollection
也查看
LineCollection