小编and*_*rea的帖子

(python)绘制带有colormap的3d表面作为第四维,x,y,z的函数

我正在尝试绘制一个三维表面,其中三个维度中的每个维度在一个单独的数组中,每个坐标处的表面着色是x,y,z的函数.一种numpy.pcolormesh,但在4D,而不是3D.3D图由下式给出:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
fig = plt.figure()
ax = fig.gca(projection='3d')
x = np.logspace(-1.,np.log10(5),50)
y = np.linspace(6,9,50)
z = np.linspace(-1,1,50)
colors = LikeBeta(y,range(50),range(50))
ax.plot_trisurf(x,y,z,cmap=colors,linewidth=0.2)
Run Code Online (Sandbox Code Playgroud)

哪里

def LikeBeta(rho0,r0,beta):
    M0 = 10**rho0*r0_array[r0]**3
    I = cst*M0*sigma_los_beta[beta,:,r0]
    S = dv**2+I
    res = (np.log(S) + (v-u)**2/S).sum()
    return res/2.
Run Code Online (Sandbox Code Playgroud)

可能cmap=colors是错的,但问题出在其他地方.我收到以下错误:

----> 8 colors = LikeBeta(y,range(50),range(50))
----> 4     I = cst*M0*sigma_los_beta[beta,:,r0]
    ValueError: operands could not be broadcast together with shapes (50,) (50,353)
Run Code Online (Sandbox Code Playgroud)

确实sigma_los_beta是一个我单独评估并具有形状的阵列,(50,353,50)而那些353是我必须拥有的数据.

如何将此函数转换为与其他条目兼容的表单plot_trisurf

抱歉,我无法提供最小的工作代码,因为dv,v和u是数据.非常感谢您的帮助.干杯

python 3d matplotlib

2
推荐指数
2
解决办法
9147
查看次数

标签 统计

3d ×1

matplotlib ×1

python ×1