2016-05-23 17 views
1

Warum erhalten alle Punkte den gleichen Wert? Ich möchte, dass Farbe mit Energie variiert.Oberflächendiagramm 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() 

Das Ergebnis wird unten

Surface plot without desired colour mapping

+1

Haben Sie die gleiche Leistung erhalten, wenn Sie ersetzen 'cmap = 'summer'' mit' cmap = cm.summer'? – jonchar

+0

Ja, das tue ich. @jonchar – filiphl

Antwort

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

Hinweis gezeigten cstride und rstride Parameter.

Axes3D.plot_surface documentation.

+0

Amen zur Verwendung der cstride und rstride Parameter! – blaylockbk

0

die Antwort von oben Gebraucht (fügen Sie die cstride und rstride Argumente), wollte aber eine Visualisierung des Unterschiedes ... Ich bin Plotten Gelände

In meinem Fall hinzufügen ...

Nein Schritt:

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

enter image description here

Mit schreiten:

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