Nota
Haga clic aquí para descargar el código de ejemplo completo
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 colorbar
necesita 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 ScalarMappable
sin 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 colorbar
llamada 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 colorbar
API.
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')
<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")
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>
barra de color de intervalos discretos #
El tercer ejemplo ilustra el uso de un
ListedColormap
que genera un mapa de colores a partir de un conjunto de colores enumerados, colors.BoundaryNorm
que 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 ListedColormap
se 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',
)
<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()