Barra de color en matplotlib

Una barra de color (colorbar) es la leyenda de una escala de colores: muestra qué valor corresponde a cada color en gráficos como mapas de calor, gráficos de contorno o gráficos de dispersión coloreados según una variable numérica.

Agregar una barra de color

Pasa el objeto que devuelve la función del gráfico (imshow, scatter, contourf, pcolormesh…) a fig.colorbar o plt.colorbar. Los colores de la barra se toman del colormap de ese objeto.

import numpy as np
import matplotlib.pyplot as plt

data = np.random.default_rng(1).random((10, 10))

fig, ax = plt.subplots()
im = ax.imshow(data, cmap = "viridis")

fig.colorbar(im, ax = ax)
# plt.show()

Agregar una barra de color en matplotlib

Barra de color para un gráfico de dispersión

En un gráfico de dispersión colorea los puntos según una variable numérica con el argumento c y un colormap.

import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(2)
x, y = rng.normal(size = (2, 100))

fig, ax = plt.subplots()
sc = ax.scatter(x, y, c = x + y, cmap = "plasma")

fig.colorbar(sc, ax = ax)
# plt.show()

Barra de color para un gráfico de dispersión en matplotlib

Etiqueta de la barra de color

Agrega un título a la barra de color con el argumento label o con set_label, que también admite propiedades de texto como size o rotation.

import numpy as np
import matplotlib.pyplot as plt

data = np.random.default_rng(1).random((10, 10))

fig, ax = plt.subplots()
im = ax.imshow(data)

cbar = fig.colorbar(im, ax = ax)
cbar.set_label("Temperatura (ºC)", size = 12)
# plt.show()

Agregar una etiqueta a una barra de color de matplotlib

Orientación, tamaño y posición

Utiliza location ("right", "left", "top" o "bottom") para colocar la barra de color, shrink para hacerla más corta, aspect para cambiar la relación entre su longitud y su anchura y pad para establecer la distancia al gráfico.

import numpy as np
import matplotlib.pyplot as plt

data = np.random.default_rng(1).random((10, 10))

fig, ax = plt.subplots()
im = ax.imshow(data)

fig.colorbar(im, ax = ax, location = "bottom",
             shrink = 0.8, aspect = 30, pad = 0.08)
# plt.show()

Barra de color horizontal en matplotlib

Ticks de la barra de color

Establece la posición de los ticks con el argumento ticks y reemplázalos por etiquetas personalizadas con set_ticklabels. El argumento extend agrega triángulos en los extremos para indicar que hay valores fuera del rango.

import numpy as np
import matplotlib.pyplot as plt

data = np.random.default_rng(1).random((10, 10))

fig, ax = plt.subplots()
im = ax.imshow(data, vmin = 0, vmax = 1)

cbar = fig.colorbar(im, ax = ax, ticks = [0, 0.5, 1], extend = "both")
cbar.set_ticklabels(["Bajo", "Medio", "Alto"])
# plt.show()

Ticks y etiquetas personalizadas en una barra de color de matplotlib

Barra de color discreta

Para agrupar los valores en intervalos con un color cada uno crea un BoundaryNorm con los límites de los intervalos y pásalo al argumento norm.

import numpy as np
import matplotlib.pyplot as plt

data = np.random.default_rng(1).random((10, 10))
import matplotlib as mpl

bounds = [0, 0.25, 0.5, 0.75, 1]
norm = mpl.colors.BoundaryNorm(bounds, plt.get_cmap("viridis").N)

fig, ax = plt.subplots()
im = ax.imshow(data, cmap = "viridis", norm = norm)

fig.colorbar(im, ax = ax, ticks = bounds)
# plt.show()

Barra de color discreta en matplotlib con BoundaryNorm

Una barra de color para varios subplots

Cuando varios subplots comparten la misma escala, establece los mismos vmin y vmax en todos ellos y pasa la lista de ejes a fig.colorbar. La barra de color se colocará junto a todos ellos.

Barra de color compartida para varios subplots en matplotlib

import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(3)

fig, axs = plt.subplots(1, 3, figsize = (8, 3.5))

for ax in axs:
    im = ax.imshow(rng.random((8, 8)), vmin = 0, vmax = 1)

fig.colorbar(im, ax = axs, shrink = 0.8)
# plt.show()

Consulta la lista completa de colormaps de matplotlib para elegir los colores de la escala o aprende a crear un mapa de calor en matplotlib.

Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar