Я пытаюсь использовать функцию цветовой карты графика 3D-поверхности в matplotlib для окрашивания поверхности на основе значений из другого массива вместо значений z. Поверхностный график создается и отображается следующим образом:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def gauss(x, y, w_0):
r = np.sqrt(x**2 + y**2)
return np.exp(-2*r**2 / w_0**2)
x = np.linspace(-100, 100, 100)
y = np.linspace(-100, 100, 100)
X, Y = np.meshgrid(x, y)
Z = gauss(X, Y, 50)
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot_surface(X, Y, Z, cmap='jet')
Теперь вместо окрашивания на основе высоты 3d-поверхности я хочу предоставить данные цвета для поверхности в виде другого массива, например, случайного:
color_data = np.random.uniform(0, 1, size=(Z.shape))
Однако я не нашел решения раскрасить 3d-поверхность на основе этих значений. В идеале это выглядело бы как контурный график в 3D, только на 3D-поверхности.
facecolors
. - person ImportanceOfBeingErnest   schedule 28.10.2019