我正在使用以下代码绘制一个3D曲面:
surf = ax3.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.5, linewidth=0, cmap=cm.jet,antialiased=True)
现在颜色非常好,虽然有点鳞状外观,但很细腻。
但我想根据 list
存储的另一个数据来改变表面颜色:
m = [104.48, 111.73,109.93,139.95,95.05,150.49,136.96,157.75]
我试着使用:
norm = cls.Normalize() # Norm to map the 'm' values to [0,1]
norm.autoscale(m)
cmap = cm.ScalarMappable(norm, 'jet')
surf = ax3.plot_surface(X, Y, Z, rstride=5, cstride=5, alpha=0.5, linewidth=0, color=cmap.to_rgba(m), antialiased=True)
但是这会引发一个错误,因为cmap.to_rgba
只接受1D数组。
如果有任何建议可以让我改变表面的colormap
,将不胜感激。
np.arange(-5,5,0.25)
中的0.25更改为较低的值。 - pingulm
将需要包含与Z相同的维度(检查Z.shape == m.shape
)。如果是这种情况,只需更改代码为my_col = cm.jet(m/np.amax(m))
以进行归一化。 - pingul