2016-05-23 2 views
1

Pourquoi tous les points ont-ils la même valeur? Je voudrais que la couleur varie avec l'énergie.Surface plot 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() 

Le résultat est illustré ci-dessous

Surface plot without desired colour mapping

+1

Est-ce que vous obtenez la même sortie si vous remplacez 'CMAP = 'summer'' avec' CMAP = cm.summer'? – jonchar

+0

Oui, oui. @jonchar – filiphl

Répondre

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

Notez les paramètres cstride et rstride.

Axes3D.plot_surface documentation.

+0

Permet d'utiliser les paramètres cstride et rstride! – blaylockbk

0

occasion la réponse ci-dessus de (ajouter les cstride et rstride arguments), mais je voulais ajouter une visualisation de la différence ...

Dans mon cas, je traçage du terrain ...

Non foulée:

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

enter image description here

Avec la foulée:

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