python - Configuración de la gama de barra de colores matplotlib
(3)
Me gustaría establecer el rango de barra de colores matplotlib. Esto es lo que tengo hasta ahora:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(20)
y = np.arange(20)
data = x[:-1,None]+y[None,:-1]
fig = plt.gcf()
ax = fig.add_subplot(111)
X,Y = np.meshgrid(x,y)
quadmesh = ax.pcolormesh(X,Y,data)
plt.colorbar(quadmesh)
#RuntimeError: You must first define an image, eg with imshow
#plt.clim(vmin=0,vmax=15)
#AttributeError: ''AxesSubplot'' object has no attribute ''clim''
#ax.clim(vmin=0,vmax=15)
#AttributeError: ''AxesSubplot'' object has no attribute ''set_clim''
#ax.set_clim(vmin=0,vmax=15)
plt.show()
¿Cómo establezco los límites de la barra de colores aquí?
Arg. Siempre es lo último que intentas:
quadmesh.set_clim(vmin=0, vmax=15)
trabajos.
Matplotlib 1.3.1 - Parece que las marcas de la barra de colores solo se dibujan cuando se crea una instancia de la barra de colores. Cambiar los límites de la barra de colores (set_clim) no hace que las marcas se vuelvan a dibujar.
La solución que encontré fue volver a crear la barra de colores en la misma entrada de ejes que la barra de colores original. En este caso, los ejes [1] era la barra de colores original. Se agregó una nueva instancia de la barra de colores con este designado con el cax = (ejes secundarios) kwarg.
# Reset the Z-axis limits
print "resetting Z-axis plot limits", self.zmin, self.zmax
self.cbar = self.fig.colorbar(CS1, cax=self.fig.axes[1]) # added
self.cbar.set_clim(self.zmin, self.zmax)
self.cbar.draw_all()
[Lo siento, en realidad un comentario para The Red Gator en Virginias responde, pero no tengo suficiente reputación para comentar]
Me quedé atascado al actualizar la barra de colores de un objeto imshow después de que se dibujó y los datos cambiaron con imshowobj.set_data (). El uso de cbarobj.set_clim () de hecho actualiza los colores, pero no las marcas o el rango de la barra de colores. En su lugar, tienes que usar imshowobj.set_clim () que actualizará la imagen y la barra de colores correctamente.
data = np.cumsum(np.ones((10,15)),0)
imshowobj = plt.imshow(data)
cbarobj = plt.colorbar(imshowobj)
imshowobj.set_data(data/10) #scale is wrong now, shows only dark color
#cbarobj.set_clim(0,1) #! image colors will update, but cbar ticks not
imshowobj.set_clim(0,1) #correct