2016-05-23 5 views
1

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

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() 

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

Surface plot without desired colour mapping

+1

вы получите тот же результат, если заменить 'CMAP = 'summer'' с' CMAP = cm.summer' ли? – jonchar

+0

Да, да. @jonchar – filiphl

ответ

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

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

Axes3D.plot_surface documentation.

+0

Аминь для использования параметров стропа и rstride! – blaylockbk

0

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

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

Нет шаг:

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

enter image description here

С походкой:

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

enter image description here

Смежные вопросы