Python で 3D プロットに複数の線をプロットしたいと思います。私の入力は、3D ポイント (行 = x、y、z 座標) の 2 つのリストに対応する、pos1 と pos2 などの 2 つの nx 3 配列で構成されます。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()
具体的には、3 つの中間配列を定義する必要はないと思いますxvals, yvals, zvals
。これに代わるよりクリーンな方法はありますか?たとえば、にリストを渡す必要がありますか?plot