Tutorial de barras de colores personalizadas #

Este tutorial muestra cómo crear y personalizar barras de colores independientes, es decir, sin un gráfico adjunto.

Barras de colores personalizadas #

A colorbarnecesita un objeto "mapeable" ( matplotlib.cm.ScalarMappable) (normalmente, una imagen) que indique el mapa de colores y la norma que se utilizará. Para crear una barra de colores sin una imagen adjunta, se puede usar una ScalarMappablesin datos asociados.

Barra de colores continua básica #

Aquí creamos una barra de colores continua básica con marcas y etiquetas.

Los argumentos de la colorbarllamada son ScalarMappable (construidos usando los argumentos norm y cmap ), los ejes donde se debe dibujar la barra de colores y la orientación de la barra de colores.

Para obtener más información, consulte la colorbarAPI.

import matplotlib.pyplot as plt
import matplotlib as mpl

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.cm.cool
norm = mpl.colors.Normalize(vmin=5, vmax=10)

fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
             cax=ax, orientation='horizontal', label='Some Units')
solo barra de colores
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e94e0>

Barra de colores extendida con escala de colores continua #

El segundo ejemplo muestra cómo hacer una barra de colores discreta basada en un cmap continuo. Con el argumento de palabra clave "extender", se eligen los colores apropiados para llenar el espacio de color, incluidas las extensiones:

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.cm.viridis
bounds = [-1, 2, 5, 7, 12, 15]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N, extend='both')

fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
             cax=ax, orientation='horizontal',
             label="Discrete intervals with extend='both' keyword")
solo barra de colores
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>

barra de color de intervalos discretos #

El tercer ejemplo ilustra el uso de un ListedColormapque genera un mapa de colores a partir de un conjunto de colores enumerados, colors.BoundaryNormque genera un índice de mapa de colores basado en intervalos discretos y extremos extendidos para mostrar los colores de valor "por encima" y "por debajo". Over y under se utilizan para mostrar datos fuera del rango normalizado [0, 1]. Aquí pasamos los colores como tonos grises como una cadena que codifica un flotante en el rango 0-1.

Si ListedColormapse usa a, la longitud de la matriz de límites debe ser uno mayor que la longitud de la lista de colores. Los límites deben ser monótonamente crecientes.

Esta vez pasamos argumentos adicionales a colorbar. Para que los valores fuera de rango se muestren en la barra de colores sin usar la palabra clave extendida con colors.BoundaryNorm, tenemos que usar el argumento de palabra clave extendida directamente en la llamada de la barra de colores. Aquí también usamos el argumento espaciado para hacer que la longitud de cada segmento de la barra de colores sea proporcional a su intervalo correspondiente.

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = (mpl.colors.ListedColormap(['red', 'green', 'blue', 'cyan'])
        .with_extremes(over='0.25', under='0.75'))

bounds = [1, 2, 4, 7, 8]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
    mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
    cax=ax,
    extend='both',
    ticks=bounds,
    spacing='proportional',
    orientation='horizontal',
    label='Discrete intervals, some other units',
)
solo barra de colores
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e8430>

Barra de colores con longitudes de extensión personalizadas #

Aquí ilustramos el uso de extensiones de barra de colores de longitud personalizada, en una barra de colores con intervalos discretos. Para hacer que la longitud de cada extensión sea igual a la longitud de los colores interiores, utilice extendfrac='auto'.

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = (mpl.colors.ListedColormap(['royalblue', 'cyan', 'yellow', 'orange'])
        .with_extremes(over='red', under='blue'))

bounds = [-1.0, -0.5, 0.0, 0.5, 1.0]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
    mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
    cax=ax,
    extend='both',
    extendfrac='auto',
    ticks=bounds,
    spacing='uniform',
    orientation='horizontal',
    label='Custom extension lengths, some other units',
)

plt.show()
solo barra de colores

Galería generada por Sphinx-Gallery