我的3D表面图的颜色图有问题。 Python说:
TypeError:您必须首先为可映射设置set_array
问题可能出在“冲浪”的定义上-如果我将facecolors = col
替换为cmap=cm.coolwarm
可以解决问题,但是它使用高度(f)而不是V。
我的代码是:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
L=2
krok=0.025
x = np.arange(-L, L,krok)
y = np.arange(-L, L,krok)
x, y = np.meshgrid(x, y)
ro=np.sqrt(x**2+y**2)
f=np.exp(-ro**2)
df=-2*ro*np.exp(ro**2)
ddf=4*ro**2*np.exp(ro**2)-2*np.exp(ro**2)
g=ro**2*(1+df**2)
V = ((ro**3*ddf/g)-df)**2/(4*g)
col = cm.jet(V/np.amax(V))
surf = ax.plot_surface(x, y, f, facecolors = col, linewidth=0, antialiased=False)
fig.colorbar(surf)