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