我想在 Python 的 3D 图中绘制多条线。我的输入由两个 nx 3 数组组成,比如 pos1 和 pos2,对应于两个 3D 点列表(行 = x,y,z 坐标)。对于每个 i,我需要绘制一条将 pos1 中的第 i 个点连接到 pos2 中的第 i 个点的线。
我有工作代码,但我确信它很糟糕,并且有更好的方法来实现它。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
# get plot set up
fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
# minimal working example: two pairs.
pos1 = np.array([[0,0,0],[2,2,2]])
pos2 = np.array([[1,1,1],[3,3,3]])
xvals = np.transpose(np.array([pos1[:,0], pos2[:,0]]))
yvals = np.transpose(np.array([pos1[:,1], pos2[:,1]]))
zvals = np.transpose(([pos1[:,2], pos2[:,2]]))
N = len(pos1)
# call plot on each line
for i in range(N):
ax.plot(xvals[i],yvals[i],zvals[i])
plt.show()
具体来说,我认为没有必要定义三个中间数组xvals, yvals, zvals
。有没有更清洁的替代品?例如,我应该将列表传递给吗plot
?