Я делаю 3D-график с помощью matplotlib с двумя поверхностями (см. Пример ниже). На данный момент обе поверхности имеют собственную цветовую карту: синяя внизу и желтая вверху.
Однако мне нужна единая цветовая карта для обеих поверхностей, то есть самый низ — синий, самый верх — желтый, а точка соприкосновения обеих поверхностей — зеленая.
Как я могу этого добиться? Нужно ли мне как-то комбинировать обе поверхности перед построением графика или мне нужно ограничить цветовые карты обеих поверхностей (нижняя с синего на зеленый, верхняя с зеленого на желтый)?
Спасибо за вашу помощь.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm
ky = np.linspace(-np.pi*2/3,np.pi*2/3,100)
kz = np.linspace(-np.pi*2/3,np.pi*2/3,100)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
KY, KZ = np.meshgrid(ky, kz)
E = np.cos(KY)*np.cos(KZ)
ax.plot_surface(KY, KZ, E-1, rstride=1, cstride=1, cmap=cm.viridis) #surface 1
ax.plot_surface(KY, KZ, -E+1, rstride=1, cstride=1, cmap=cm.viridis) #surface 2
ax.view_init(elev=7, azim=-69)
plt.show()