在得出三个坐标数据,然后根据X,Y,Z来形成三维表面图,颜色刻度
surf = ax.plot_surface(X, Y, Z, rstride=1,cstride=1,cmap=cm.jet, linewidth=0, antialiased=False) fig.colorbar(surf, shrink=0.5, aspect=5)4 plt.show()
结果发现图像的颜色没有发生变化,没办法和颜色映射的刻度对应。从网上找了一上午,终于找到了解决办法:
norm = matplotlib.colors.Normalize(vmin=np.min(Z),vmax=np.max(Z)) c_m = matplotlib.cm.Spectral s_m = matplotlib.cm.ScalarMappable(cmap=c_m, norm=norm) s_m.set_array([]) X,Y = np.meshgrid(error, theta) fig = plt.figure() ax = fig.gca(projection='3d') surf = ax.plot_surface(X, Y,Z, rstride=1,cstride=1,facecolors = s_m.to_rgba(Z), linewidth=0, antialiased=False) fig.colorbar(s_m) plt.show()
经过这样修改,三维曲面图的颜色与颜色映射的刻度就可以对应了



