35

3Dの配列から取得した線を生成したいと思います。

コードは次のとおりです。

VecStart_x = [0,1,3,5]
VecStart_y = [2,2,5,5]
VecStart_z = [0,1,1,5]
VecEnd_x = [1,2,-1,6]
VecEnd_y = [3,1,-2,7]
VecEnd_z  =[1,0,4,9]

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.plot([VecStart_x ,VecEnd_x],[VecStart_y,VecEnd_y],[VecStart_z,VecEnd_z])
plt.show()
Axes3D.plot()

そのエラーが発生します:

ValueError:3番目の引数はフォーマット文字列である必要があります

4

2 に答える 2

41

4行をプロットしたいと思います。次に、試すことができます

for i in range(4):
    ax.plot([VecStart_x[i], VecEnd_x[i]], [VecStart_y[i],VecEnd_y[i]],zs=[VecStart_z[i],VecEnd_z[i]])

@Nicolas が提案したように、matplotlib ギャラリーをご覧ください。

于 2012-07-18T12:40:48.060 に答える
14

ギャラリーは、例を見つけるための優れた出発点です。

http://matplotlib.org/gallery.html

ここに 3d ライン プロットの例があります。

http://matplotlib.org/examples/mplot3d/lines3d_demo.html

ax.plot 関数に 3 つのベクトルを渡す必要があることがわかります。あなたは実際にリストのリストを渡しています。Start および End サブリストの意味がわかりませんが、次の行は機能するはずです。

ax.plot(VecStart_x + VecEnd_x, VecStart_y + VecEnd_y, VecStart_z +VecEnd_z)

ここでは、軸ごとにリストを 1 つだけにするために、サブリスト (連結) を合計します。

于 2012-07-18T12:36:55.233 に答える