颜色映射一个3D箭头函数

5
我用Matplotlib在Python中创建了一个漂亮的3D位移向量场,结果很满意。然而,在视觉上,只能看到方向,位移大小不太容易看清。有没有一种在Python中使用彩色刻度来表示箭头的方法,以便位移大小更清晰/更可见。
这是我目前的代码:
#%% Import Libraries

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

#%% Import tsv file of results

path = 'W:/Scott/Continuous_DIC_Results/A35_L7-8_500x500x1000/'
name = 'Z=-5,200,-20,20,spm100'

results = np.loadtxt(path+name+'.tsv', dtype=float, comments='#', delimiter=None, converters=None, skiprows=1, usecols=(1,2,3,4,5,6), unpack=False, ndmin=0)

Z,Y,X = results[:,0], results[:,1],results[:,2]
dz,dy,dx = results[:,3],results[:,4],results[:,5]


#%% Plot Displacement Field

fig = plt.figure()
ax = fig.gca(projection='3d')

ax.quiver(X, Y, Z, dx, dy, dz,              # data
          length=20,                        # arrow length
          color='Tomato'                    # arrow colour
          )

ax.set_title('3D Vector Field')             # title
ax.view_init(elev=18, azim=30)              # camera elevation and angle
ax.dist=8                                   # camera distance

plt.show()

My Displacement Vector Field

1个回答

4
你需要计算风速(或其他你用作大小的数组),然后将此数组添加到箭头图函数中:
import matplotlib as mpl 
import matplotlib.pyplot as plt
from numpy import arange,meshgrid,sqrt

u,v = arange(-50,51,10),arange(-50,51,10)
u,v = meshgrid(u,v)
M = sqrt(u*u+v*v) # magnitude
x,y = u,v
qq=plt.quiver(x,y,u,v,M,cmap=plt.cm.jet)
plt.colorbar(qq, cmap=plt.cm.jet)
plt.show()

enter image description here


我尝试了这个,但现在出现了类型错误:您必须首先将数组设置为可映射。抱歉,我对Matplotlib还不熟悉。 - Scott Alistair
1
fig = plt.figure(); ax = fig.gca(projection='3d'); qq=ax.quiver(X, Y, Z, dx, dy, dz, mag,cmap=plt.cm.jet); ax.set_title('三维向量场'); ax.view_init(elev=18, azim=30); ax.dist=8; plt.colorbar(qq, cmap=plt.cm.jet); plt.show(); - Scott Alistair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接