Gráfico de líneas en pandas

Los gráficos de líneas son el tipo de gráfico por defecto del método plot de pandas. Son la mejor opción para representar series temporales, ya que el índice (por ejemplo, un índice de fechas) se utiliza para el eje X.

Gráfico de líneas a partir de una Series

Llama a plot (o a plot.line) sobre una Series para dibujar una sola línea.

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

rng = np.random.default_rng(11)
returns = rng.normal(0.001, 0.02, (250, 3))
df = pd.DataFrame(100 * np.exp(returns.cumsum(axis = 0)),
                  columns = ["Alpha", "Beta", "Gamma"],
                  index = pd.bdate_range("2025-01-01", periods = 250))

df["Alpha"].plot()
# plt.show()

Gráfico de líneas a partir de una Series de pandas

Varias líneas a partir de un DataFrame

Cuando llamas a plot sobre un data frame cada columna numérica se dibuja como una línea diferente y se agrega una leyenda automáticamente.

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

rng = np.random.default_rng(11)
returns = rng.normal(0.001, 0.02, (250, 3))
df = pd.DataFrame(100 * np.exp(returns.cumsum(axis = 0)),
                  columns = ["Alpha", "Beta", "Gamma"],
                  index = pd.bdate_range("2025-01-01", periods = 250))

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

Gráfico de líneas con varias líneas en pandas

Elegir las columnas

Selecciona las columnas que quieres representar con y, o indexa el data frame antes de representarlo.

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

rng = np.random.default_rng(11)
returns = rng.normal(0.001, 0.02, (250, 3))
df = pd.DataFrame(100 * np.exp(returns.cumsum(axis = 0)),
                  columns = ["Alpha", "Beta", "Gamma"],
                  index = pd.bdate_range("2025-01-01", periods = 250))

df.plot(y = ["Alpha", "Gamma"])
# plt.show()

Representar columnas concretas en un gráfico de líneas de pandas

Colores, tipos de línea y marcadores

Utiliza color para establecer los colores, style para pasar una cadena de formato para cada línea (color, marcador y tipo de línea) y linewidth para cambiar el grosor.

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

rng = np.random.default_rng(11)
returns = rng.normal(0.001, 0.02, (250, 3))
df = pd.DataFrame(100 * np.exp(returns.cumsum(axis = 0)),
                  columns = ["Alpha", "Beta", "Gamma"],
                  index = pd.bdate_range("2025-01-01", periods = 250))

df.plot(style = ["-", "--", ":"],
        color = ["#264653", "#E76F51", "#2A9D8F"], linewidth = 2)
# plt.show()

Cambiar los colores y los tipos de línea de un gráfico de líneas de pandas

Marcadores

Agrega marcadores con el argumento marker o dentro de la cadena de formato, por ejemplo "o-".

import pandas as pd
import matplotlib.pyplot as plt

s = pd.Series([3, 5, 4, 7, 6, 8], index = [2020, 2021, 2022, 2023, 2024, 2025])

s.plot(marker = "o", markersize = 8)
# plt.show()

Gráfico de líneas con marcadores en pandas

Agregar una media móvil

Pasa los ejes que devuelve la primera llamada a plot al argumento ax de la segunda para dibujar ambas líneas en el mismo gráfico. Es útil para agregar una media móvil calculada con rolling.

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

rng = np.random.default_rng(11)
returns = rng.normal(0.001, 0.02, (250, 3))
df = pd.DataFrame(100 * np.exp(returns.cumsum(axis = 0)),
                  columns = ["Alpha", "Beta", "Gamma"],
                  index = pd.bdate_range("2025-01-01", periods = 250))

ax = df["Alpha"].plot(alpha = 0.5, label = "Alpha")
df["Alpha"].rolling(20).mean().plot(ax = ax, linewidth = 2, label = "Media móvil")
ax.legend()
# plt.show()

Gráfico de líneas con media móvil en pandas

Escala logarítmica y subplots

logy = True utiliza una escala logarítmica en el eje Y y subplots = True dibuja cada línea en un subplot diferente.

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

rng = np.random.default_rng(11)
returns = rng.normal(0.001, 0.02, (250, 3))
df = pd.DataFrame(100 * np.exp(returns.cumsum(axis = 0)),
                  columns = ["Alpha", "Beta", "Gamma"],
                  index = pd.bdate_range("2025-01-01", periods = 250))

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

Gráfico de líneas con un subplot por columna en pandas

Consulta la guía sobre gráficos con pandas para el resto de argumentos o aprende a personalizar el eje de fechas con matplotlib.

Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar