Guía Práctica para Graficar con Matplotlib en Python

Matplotlib es una biblioteca de Python enfocada en la creación de visualizaciones gráficas. Permite generar gráficos bidimensionales a partir de arreglos, comúnmente integrados con NumPy.

Fundamentos de la Visualización

Para la mayoría de operaciones gráficas, basta con importar el submódulo principal: import matplotlib.pyplot as plt.

Generación de un Gráfico Simple


import matplotlib.pyplot as plt

# Definir datos de ejemplo
valores_x = [0, 1, 2, 3, 4]
valores_y = [0, 1, 4, 9, 16]

# Crear figura y graficar
figura = plt.figure()
plt.plot(valores_x, valores_y)

Para obtener gráficos de alta resolución en formato vectorial, se puede configurar la salida SVG.


import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')

valores_x = [0, 1, 2, 3, 4]
valores_y = [0, 1, 4, 9, 16]

figura = plt.figure()
plt.plot(valores_x, valores_y)

Almacenamiento de Gráficos

Use el método .savefig() con una ruta completa y extensión adecuada, como SVG para vectores.


figura.save_fig('C:/Documentos/mi_grafico.svg')

Dos Enfoques para Graficar

Matplotlib ofrece dos estilos: el estilo MATLAB (abreviado) y el orientado a objetos. Ambos son intercambiables.


import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')

datos_x = [5, 10, 15, 20, 25]
datos_y = [5, 50, 75, 100, 125]

# Estilo MATLAB
fig1 = plt.figure()
plt.plot(datos_x, datos_y)

# Estilo orientado a objetos
fig2 = plt.figure()
ejes2 = plt.axes()
ejes2.plot(datos_x, datos_y)

Entendiendo Figuras y Ejes

La figura es el lienzo contenedor, mientras que los ejes definen el área del gráfico con sus escalas. Se recomienda crear figuras explícitamente para facilitar el guardado.

Composición de Múltiples Elementos Gráficos

Al trabajar en Jupyter, toda la lógica de creación y renderizado debe permanecer en una sola celda de código.

Trazado de Varias Líneas


import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')

eje_x = [1, 2, 3, 4, 5]
serie_a = [2, 4, 6, 8, 10]
serie_b = [10, 8, 6, 4, 2]
serie_c = [5, 5, 5, 5, 5]

figura = plt.figure()
plt.plot(eje_x, serie_a)
plt.plot(eje_x, serie_b)
plt.plot(eje_x, serie_c)

Disposición con Subgráficos

Para organizar múltiples subgráficos, el método orientado a objetos es más conciso.


import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')

x_datos = [0, 1, 2, 3, 4]
y1 = [0, 1, 2, 3, 4]
y2 = [4, 3, 2, 1, 0]
y3 = [2, 2, 2, 2, 2]

# Enfoque orientado a objetos con subplots
fig, axes = plt.subplots(3)
axes[0].plot(x_datos, y1)
axes[1].plot(x_datos, y2)
axes[2].plot(x_datos, y3)

Tipos de Gráficos Disponibles

Matplotlib soporta diversas categorías: gráficos de líneas, de malla, estadísticos, contornos y 3D. Los más comunes son los de líneas y los histogramas.

Personalización de Gráficos de Líneas

La función plot() permite ajustar color, estilo de línea, grosor y marcadores.


import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')

xi = [0, 1, 2, 3, 4]
yi = [10, 20, 30, 40, 50]

plt.figure()
plt.plot(xi, yi, color='#FF5733', linestyle='--', linewidth=2.5, marker='s', markersize=8)

Visualización de Datos Matriciales

Use imshow() para representar matrices. Se recomienda el estilo MATLAB para más funcionalidades.


import numpy as np
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')

matriz_datos = np.random.rand(10, 10)
plt.figure()
imagen = plt.imshow(matriz_datos)
plt.colorbar(imagen)

Gráficos Estadísticos: Histogrmaas

Los histogramas son ideales para visualizar distribuciones de datos.


import numpy as np
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')

muestra = np.random.normal(loc=5, scale=2, size=1000)

fig, ax = plt.subplots()
ax.hist(muestra, bins=25, alpha=0.7, color='#3498DB', edgecolor='white', histtype='stepfilled')

Ajustes de Propiedades de la Figura

Modificación de Límites de Ejes

Se pueden establecer manualmente con set_xlim/set_ylim o axis.


import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [10, 20, 30])
ax.set(xlim=(0, 4), ylim=(5, 35), title='Gráfico Ajustado', xlabel='Eje X', ylabel='Eje Y')

Etiquetas y Leyendas

Las leyendas se agregan con .legend() y admiten parámetros como loc y ncol.


import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 4, 9], label='Cuadrática')
ax.plot([1, 2, 3], [1, 2, 3], label='Lineal')
ax.legend(loc='upper left', frameon=False, ncol=2)

Adición de Cuadrícula

Activa una cuadrícula con .grid(), personalizable en color y estilo.


import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16])
ax.grid(True, color='gray', linestyle='-.')

Etiquetas: Matplotlib Python NumPy visualización de datos gráficos estadísticos

Publicado el 7-16 13:44