Gráfico de áreas en pandas

Los gráficos de áreas son gráficos de líneas con el área bajo la línea rellena. En pandas se crean con plot.area y, a diferencia de los gráficos de líneas, las columnas se apilan por defecto.

Gráfico de áreas apiladas

plot.area apila las columnas del data frame unas sobre otras, de modo que la línea superior representa el total.

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

rng = np.random.default_rng(3)
df = pd.DataFrame(rng.uniform(1, 5, (12, 3)).cumsum(axis = 0),
                  columns = ["A", "B", "C"],
                  index = pd.date_range("2025-01-01", periods = 12, freq = "MS"))

df.plot.area()
# plt.show()

Gráfico de áreas apiladas en pandas

Gráfico de áreas sin apilar

Establece stacked = False para dibujar cada área desde cero. Utiliza alpha para establecer cierta transparencia y que todas las áreas sean visibles.

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

rng = np.random.default_rng(3)
df = pd.DataFrame(rng.uniform(1, 5, (12, 3)).cumsum(axis = 0),
                  columns = ["A", "B", "C"],
                  index = pd.date_range("2025-01-01", periods = 12, freq = "MS"))

df.plot.area(stacked = False, alpha = 0.4)
# plt.show()

Gráfico de áreas sin apilar en pandas

Gráfico de áreas apiladas en porcentaje

Divide cada fila entre su total para representar la proporción de cada columna a lo largo del tiempo.

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

rng = np.random.default_rng(3)
df = pd.DataFrame(rng.uniform(1, 5, (12, 3)).cumsum(axis = 0),
                  columns = ["A", "B", "C"],
                  index = pd.date_range("2025-01-01", periods = 12, freq = "MS"))

share = df.div(df.sum(axis = 1), axis = 0)

ax = share.plot.area(ylim = (0, 1))
ax.yaxis.set_major_formatter("{x:.0%}")
# plt.show()

Gráfico de áreas apiladas en porcentaje en pandas

Colores de las áreas

Elige los colores con una lista o con un colormap.

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

rng = np.random.default_rng(3)
df = pd.DataFrame(rng.uniform(1, 5, (12, 3)).cumsum(axis = 0),
                  columns = ["A", "B", "C"],
                  index = pd.date_range("2025-01-01", periods = 12, freq = "MS"))

df.plot.area(colormap = "Set2", linewidth = 0)
# plt.show()

Cambiar los colores de un gráfico de áreas de pandas

Consulta también cómo crear un gráfico de áreas en matplotlib o un gráfico de áreas apiladas en matplotlib.

Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon
Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon

También te puede interesar