python - example - matplotlib colors palette
Python matplotlib cambia el color predeterminado para los valores que exceden el rango de la barra de colores (1)
Al rellenar una cuadrícula con color, como cuando se utiliza contourf en Pyplot, necesito encontrar una manera de cambiar el color que Pyplot utiliza para rellenar los datos que exceden el rango especificado de la barra de colores. Deseo tener una barra de colores estática que no cambie automáticamente su rango para ajustarse al máximo / mínimo de los datos, por lo que es inevitable tener valores extremos ocasionales que excedan sus límites, y es necesario especificar los colores para dichos valores.
El color predeterminado para los valores que exceden los límites de la barra de colores es el blanco, que puede chocar con los datos circundantes si el mapa de colores no tiene blanco como colores finales. La imagen de ejemplo se muestra a continuación: observe el relleno blanco cuando los valores exceden el rango negativo de la barra de colores:
Creo que hay una manera de especificar qué color usar en cada límite si se superan con el uso de rcParams, pero no he podido encontrar información sobre esto en ningún lugar.
Cualquier ayuda sería apreciada.
Los colores fuera de los límites se pueden establecer utilizando los métodos set_over
y set_under
del mapa de colores; Consulte la documentación . Deberá especificar estos valores cuando cree su mapa de colores. Sin embargo, no veo ninguna configuración matplotlibrc para establecer el valor predeterminado para esto. También es posible que desee preguntar en la lista de correo matplotlib.
Edit: veo lo que está pasando. El área blanca que describe no está más allá de los límites de la gama de colores. Es simplemente el fondo en blanco de los ejes. Debido a que solo está trazando ciertos niveles, cualquier nivel fuera de ese rango no se trazará en absoluto, dejando esas áreas en blanco. Para conseguir lo que quieres, haz esto:
cs = pyplot.contourf(x,y,z,levels=np.arange(50, 220, 20), cmap=pyplot.cm.jet, extend="both")
cs.cmap.set_under(''k'')
cs.set_clim(50, 210)
cb = pyplot.colorbar(cs)
El argumento "extender" es la clave; le dice a contourf que siga adelante y dibuje todos los contornos, pero colapse todo fuera del rango dado en categorías "demasiado grandes" y "demasiado pequeñas". La llamada cs.set_clim
es necesaria para cs.set_clim
una rareza que descubrí en contourf al depurar esto; por alguna razón, cuando usa extend
, manipula los límites de datos, por lo que necesitamos restablecerlos de nuevo a lo que queremos que sean.
Además, como cuestión de estilo, no deberías hacer cosas como Colormap.set_under(cmap,color=''k'')
. Esto es llamar al método de la clase y pasar la instancia explícitamente, lo cual es una forma extraña de hacerlo. Simplemente haga cmap.set_under(color="k")
.