【问题标题】:Color-mapping a 3D quiver function using matplotlib使用 matplotlib 对 3D 颤动函数进行颜色映射
【发布时间】:2016-10-08 22:56:30
【问题描述】:

我使用 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()

【问题讨论】:

    标签: python matplotlib 3d mplot3d color-mapping


    【解决方案1】:

    您必须计算风速(或用作幅度的另一个数组),然后将此数组添加到 quiver 函数:

    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()
    

    【讨论】:

    • 我试过这个,但现在我得到一个类型错误:你必须先将数组设置为可映射。抱歉,我是 Matplotlib 的新手
    • 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('3D 矢量场') ; ax.view_init(elev=18, azim=30) ; ax.dist=8 ; plt.colorbar(qq, cmap=plt.cm.jet) ; plt.show()
    猜你喜欢
    • 2021-07-08
    • 2022-01-16
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多