У меня проблемы с картой цветов для моего трехмерного графика поверхности.Python говорит:
TypeError: Сначала вы должны установить set_array для mappable
Проблема, вероятно, в определении "surf" - это работает, если я заменю facecolors = col
на cmap=cm.coolwarm
, но вместо V используется высота (f).
Мой код:
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)