Поверхностный график Matplotlib, показывающий один и тот же цвет для разных значений

Почему все точки получают одинаковое значение? Я хотел бы, чтобы цвет менялся в зависимости от энергии.

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm
from numpy import *

x = linspace(0.2, 2, 11)
y = linspace(0.1, 1, 11)
alpha, beta = meshgrid(x,y)
energy = matrix(loadtxt('energyPlotfileN6.txt'))

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(alpha, beta, energy, cmap='summer', vmin=energy.min(), vmax=energy.max())
plt.xlabel("alpha")
plt.ylabel("beta")
ax.set_zlabel("energy")
plt.show()

Результат показан ниже

График поверхности без желаемого сопоставления цветов


person filiphl    schedule 23.05.2016    source источник
comment
Вы получите тот же результат, если замените cmap='summer' на cmap=cm.summer?   -  person jonchar    schedule 23.05.2016
comment
Да. @jonchar   -  person filiphl    schedule 23.05.2016


Ответы (2)


Использовал ответ выше (добавьте аргументы cstride и rstride), но хотел добавить визуализацию разницы...

В моем случае я рисую местность...

Без шага:

surf = ax.plot_surface(topo['lon'], topo['lat'], topo['value'],
                       cmap='terrain', vmax=2800, vmin=1300,
                       linewidth=.1, antialiased=False)

введите здесь описание изображения

С шагом:

surf = ax.plot_surface(topo['lon'], topo['lat'], topo['value'],
                           cmap='terrain', vmax=2800, vmin=1300,
                           linewidth=.1, antialiased=False,
                           rstride=1, cstride=1)

введите здесь описание изображения

person blaylockbk    schedule 13.07.2017

ax.plot_surface(alpha, beta, energy, cstride=1, rstride=1, cmap='summer', vmin=energy.min(), vmax=energy.max())

Обратите внимание на параметры cstride и rstride.

Документация по Axes3D.plot_surface.

person Han-Kwang Nienhuys    schedule 23.05.2016
comment
Согласитесь с использованием параметров cstride и rstride! - person blaylockbk; 13.07.2017