У меня есть простая задача, которая должна иметь простое решение, но я пытаюсь ее решить уже несколько дней. Я стараюсь быть конкретным.
Я пытаюсь построить поверхность, используя mplot3d от matplotlib и поверхность _. Когда я рисую поверхность набора данных «z» и пытаюсь масштабировать цветовую карту до определенного максимального значения, я изменяю свойство «vmax» на это значение. Это прекрасно работает.
Когда я пытаюсь построить поверхность одного набора данных (z )и использовать цвета лиц второго набора данных (fc ), это также работает нормально.
Когда я хочу масштабировать палитру цветов лица, свойство vmax отменяется значениями цвета лица. Таким образом, Vmax не имеет никакого эффекта (попытка1 ). Линии тоже исчезли, но это уже другой вопрос.
Также попытка изменить значения набора данных цвета лица (fc )не дала желаемого эффекта (попытка2 ).
Я пытаюсь получить фигуру с масштабированной картой цветов (, как на фигуре, «масштабированной» ниже ), но масштабированной по цветам лица, а не значениям z -.
Приведенный ниже код — это то, что у меня есть сейчас, и результаты выглядят так:
Кто-нибудь знает, что мне здесь не хватает? Любые мысли приветствуются!
import pylab as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
plt.ion()
# creating dataset
profile = np.arange(20)**2
z = profile.repeat(20).reshape(20,20)
fc= np.rot90(z.copy())
x = np.arange(z.shape[0])
y = np.arange(z.shape[1])
X, Y = np.meshgrid(x,y)
# plotting
vmax = 100
fig = plt.figure()
ax = fig.add_subplot(1,4,1, projection='3d', azim=210)
ax.plot_surface(X,Y,z, cmap=plt.cm.jet, cstride=1, rstride=1)
ax.set_title('normal')
ax = fig.add_subplot(1,4,2, projection='3d', azim=210)
ax.plot_surface(X,Y,z, cmap=plt.cm.jet, cstride=1, rstride=1, vmax=vmax)
ax.set_title('scaled')
ax = fig.add_subplot(1,4,3, projection='3d', azim=210)
ax.plot_surface(X,Y,z, facecolors=plt.cm.jet(fc), cstride=1, rstride=1, vmax=vmax)
ax.set_title('rotated (attempt1)')
ax = fig.add_subplot(1,4,4, projection='3d', azim=210)
fc[fc> vmax] = vmax
ax.plot_surface(X,Y,z, facecolors=plt.cm.jet(fc), cstride=1, rstride=1)
ax.set_title('rotated (attempt2)')