Subplots en pandas

pandas puede dividir las columnas de un data frame en varios subplots con un solo argumento. Para diseños más complejos crea los subplots con matplotlib y pasa cada eje a plot.

Un subplot por columna

Establece subplots = True para dibujar cada columna en su propio subplot.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rng = np.random.default_rng(7)
df = pd.DataFrame({"Temperatura": 25 + rng.normal(0, 1, 30).cumsum(),
                   "Humedad": 60 + rng.normal(0, 5, 30),
                   "Viento": rng.gamma(2, 4, 30),
                   "Lluvia": rng.exponential(2, 30)},
                  index = pd.date_range("2025-06-01", periods = 30))

df.plot(subplots = True)
# plt.show()

Un subplot por columna en pandas

Distribución de los subplots

layout establece el número de filas y columnas de la cuadrícula. Utiliza -1 para calcular una de las dimensiones automáticamente.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rng = np.random.default_rng(7)
df = pd.DataFrame({"Temperatura": 25 + rng.normal(0, 1, 30).cumsum(),
                   "Humedad": 60 + rng.normal(0, 5, 30),
                   "Viento": rng.gamma(2, 4, 30),
                   "Lluvia": rng.exponential(2, 30)},
                  index = pd.date_range("2025-06-01", periods = 30))

df.plot(subplots = True, layout = (2, 2), legend = False,
        title = list(df.columns))
# plt.show()

Cuadrícula de subplots con layout en pandas

Compartir los ejes

sharex y sharey utilizan los mismos límites en todos los subplots, lo que facilita compararlos.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rng = np.random.default_rng(7)
df = pd.DataFrame({"Temperatura": 25 + rng.normal(0, 1, 30).cumsum(),
                   "Humedad": 60 + rng.normal(0, 5, 30),
                   "Viento": rng.gamma(2, 4, 30),
                   "Lluvia": rng.exponential(2, 30)},
                  index = pd.date_range("2025-06-01", periods = 30))

df[["Viento", "Lluvia"]].plot(subplots = True, layout = (1, 2), sharey = True)
# plt.show()

Subplots con el eje Y compartido en pandas

Varias columnas en el mismo subplot

Desde pandas 2.0 subplots también admite una lista de tuplas para agrupar varias columnas en el mismo subplot.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rng = np.random.default_rng(7)
df = pd.DataFrame({"Temperatura": 25 + rng.normal(0, 1, 30).cumsum(),
                   "Humedad": 60 + rng.normal(0, 5, 30),
                   "Viento": rng.gamma(2, 4, 30),
                   "Lluvia": rng.exponential(2, 30)},
                  index = pd.date_range("2025-06-01", periods = 30))

df.plot(subplots = [("Viento", "Lluvia")], layout = (3, 1))
# plt.show()

Agrupar varias columnas en el mismo subplot en pandas

Dibujar sobre ejes existentes

Crea los subplots con plt.subplots y pasa cada eje al argumento ax. Esto permite combinar distintos tipos de gráficos en la misma figura.

Combinar distintos gráficos de pandas en subplots de matplotlib

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rng = np.random.default_rng(7)
df = pd.DataFrame({"Temperatura": 25 + rng.normal(0, 1, 30).cumsum(),
                   "Humedad": 60 + rng.normal(0, 5, 30),
                   "Viento": rng.gamma(2, 4, 30),
                   "Lluvia": rng.exponential(2, 30)},
                  index = pd.date_range("2025-06-01", periods = 30))

fig, (ax1, ax2) = plt.subplots(1, 2, figsize = (8, 3.5))

df["Temperatura"].plot(ax = ax1)
df[["Viento", "Lluvia"]].mean().plot.bar(ax = ax2, rot = 0)
# plt.show()

Aprende más sobre cómo crear y personalizar subplots en matplotlib.

Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon

También te puede interesar