ticks pcolormesh examples color change bar python matplotlib

python - pcolormesh - Colorbar para el comando matplotlib plot_surface



imshow colorbar (1)

He modificado el código de ejemplo de mplot3d para mi aplicación con la ayuda de Paul. El código dice:

from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection=''3d'') u = np.linspace(0, 2 * np.pi, 100) v = np.linspace(0, np.pi, 100) x = 10 * np.outer(np.cos(u), np.sin(v)) y = 10 * np.outer(np.sin(u), np.sin(v)) z = 10 * np.outer(np.ones(np.size(u)), np.cos(v)) z1 = z * np.cos(0.5*x) N = z1 / z1.max() # normalize 0..1 surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=cm.jet(N), linewidth=0, antialiased=False, shade=False) fig.colorbar(surf, shrink=0.5, aspect=5) plt.show()

El código funciona muy bien para trazar la superficie. Pero cuando trato de agregar una barra de color al diagrama anterior, aparece el siguiente error:

Traceback (most recent call last): File "<ipython console>", line 1, in <module> File "C:/Python26/lib/site-packages/spyderlib/widgets/externalshell/startup.py", line 122, in runfile execfile(filename, glbs) File "C:/Documents and Settings/mramacha/My Documents/Python/Candela/test.py", line 22, in <module> fig.colorbar(surf, shrink=0.5, aspect=5) File "C:/Python26/lib/site-packages/matplotlib/figure.py", line 1104, in colorbar cb = cbar.Colorbar(cax, mappable, **kw) File "C:/Python26/lib/site-packages/matplotlib/colorbar.py", line 706, in __init__ mappable.autoscale_None() # Ensure mappable.norm.vmin, vmax File "C:/Python26/lib/site-packages/matplotlib/cm.py", line 261, in autoscale_None raise TypeError(''You must first set_array for mappable'') TypeError: You must first set_array for mappable

Estaría muy agradecido si alguien puede guiarme con esto.

Prabhu


Puede usar un objeto asignable proxy ya que su matriz de superficie no está asignada. El mappable simplemente convierte los valores de cualquier matriz en colores RGB definidos por un mapa de colores.

En tu caso, quieres hacer esto con la matriz z1:

import matplotlib.cm as cm m = cm.ScalarMappable(cmap=cm.jet) m.set_array(z1) plt.colorbar(m)