我試圖繪製一個3d表面,其中三個維度中的每個值分別表示顏色和每個座標是x,y,z的函數。一種numpy.pcolormesh,但在4D,而不是3D。 3D圖由下式給出:(python)繪製三維表面作爲第四維,colormap作爲第四維,函數的x,y,z
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)
其中
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.
也許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)
事實上sigma_los_beta
是我單獨評估,並塑造(50,353,50)
和那些353是我必須有數據的數組。
如何將此函數轉換爲與plot_trisurf
其他條目兼容的表單?
對不起,但我不能提供一個最小的工作代碼,因爲dv,v和u是數據。 非常感謝您的幫助。乾杯
你可以嘗試切片?你的示例代碼中有很多未定義的變量。不理解什麼是一切都很難幫助。 – tnknepp