this example のように3dで震えが使用されている場合は、すべての矢印の長さだけを設定することができます。 提供される矢印の実際の長さは反映されません。Python matplotlibで3d Quiverダイアグラムを正しくスケールする方法は?
2dの場合に機能する議論スケールは、ここでは機能しないようです。
矢印の長さが与えられたベクトルフィールドの長さを反映するように矢印を拡大縮小する方法はありますか?
this example のように3dで震えが使用されている場合は、すべての矢印の長さだけを設定することができます。 提供される矢印の実際の長さは反映されません。Python matplotlibで3d Quiverダイアグラムを正しくスケールする方法は?
2dの場合に機能する議論スケールは、ここでは機能しないようです。
矢印の長さが与えられたベクトルフィールドの長さを反映するように矢印を拡大縮小する方法はありますか?
を見てそれは奇妙だという。 u、v、wは方向を確定し、lengthパラメータはすべての長さに同じように作用するようです。配列をlengthパラメータに入れることはできません。周りの代表的な作品として
、あなただけ個別にそれぞれの矢印をプロットすることができます:答えのために、そして自分のよく文書化コードの
from mpl_toolkits.mplot3d import Axes3D
import matplotlib
import numpy as np
import pylab as plt
print(matplotlib.__version__)
fig = plt.figure()
ax = fig.gca(projection='3d')
x, y, z = np.meshgrid(np.arange(-1, 1, 0.4),
np.arange(-1, 1, 0.4),
np.arange(-1, 1, 0.4))
x = x.reshape(np.product(x.shape))
y = y.reshape(np.product(y.shape))
z = z.reshape(np.product(z.shape))
scale = 0.02
u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
w = np.sqrt(2.0/3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) * np.sin(np.pi * z)
lengths = np.sqrt(x**2+y**2+z**2)
for x1,y1,z1,u1,v1,w1,l in zip(x,y,z,u,v,w,lengths):
ax.quiver(x1, y1, z1, u1, v1, w1, pivot = 'middle', length=l*0.5)
ax.scatter(x,y,z, color = 'black')
plt.show()
ドキュメントの周りをちょうど穿孔したhttp://matplotlib.org/mpl_toolkits/mplot3d/api.html これはあなたのために機能しますか?
まだ明らかでない矢印の長さは正しいですが、少なくとも今の3D
from mpl_toolkits.mplot3d import Axes3D
import matplotlib
import numpy as np
print(matplotlib.__version__)
fig = plt.figure()
ax = fig.gca(projection='3d')
x, y, z = np.meshgrid(np.arange(-1, 1, 0.4),
np.arange(-1, 1, 0.4),
np.arange(-1, 1, 0.4))
scale = 0.02
u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
w = np.sqrt(2.0/3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) * np.sin(np.pi * z)
ax.quiver(x, y, z, u, v, w, pivot = 'middle', arrow_length_ratio = 0.02)
ax.scatter(x,y,z, color = 'black')
plt.show()
それぞれの長さを個別に設定することは、まあ、それは動作するようだ... 答えをありがとう! – SeF