Я пытаюсь использовать функцию colormap для графика 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')
Теперь вместо окраски, основанной на высоте трехмерной поверхности, я собираюсь предоставить данные цвета для поверхности в виде другого массива, здесьНапример, случайный:
color_data = np.random.uniform(0, 1, size=(Z.shape))
Однако я не нашел решения для раскрашивания 3d-поверхности на основе этих значений. В идеале это будет выглядеть как контурный график в 3d, просто на 3d поверхности.