Domina los tamaños de figura en Matplotlib: guía completa
Updated on
Controlar el tamaño de la figura es una de las partes más importantes para crear visualizaciones limpias, legibles y con calidad de publicación en Matplotlib. Tanto si estás generando gráficos exploratorios rápidos como preparando figuras pulidas para informes, saber cómo establecer y ajustar correctamente los tamaños de las figuras te evitará gráficos distorsionados, etiquetas ilegibles y diseños inconsistentes.
Esta guía cubre todos los métodos comunes y prácticos para controlar los tamaños de figura en Matplotlib, incluyendo:
- Uso de
figsizeal crear nuevas figuras - Ajuste de tamaños de figuras ya existentes
- Uso de
rcParamspara valores globales por defecto - Establecer el tamaño de la figura en centímetros
- Cambiar el tamaño en gráficos de Pandas
- Restablecer y modificar dinámicamente el tamaño global
- Una guía de resolución de problemas
- Una tabla comparativa que resume todos los métodos
⭐ TL;DR — Referencia rápida
| Tarea | Mejor método | Ejemplo |
|---|---|---|
| Establecer tamaño para una nueva figura | plt.figure(figsize=(w, h)) | plt.figure(figsize=(8, 6)) |
| Cambiar el tamaño de una figura existente | fig.set_size_inches(w, h) | fig.set_size_inches(12, 4) |
| Establecer tamaño global por defecto | plt.rcParams["figure.figsize"] = ... | (12, 6) |
| Establecer tamaño en un gráfico de Pandas | df.plot(figsize=(w, h)) | (10, 5) |
| Usar centímetros | Convertir cm → pulgadas | w_cm / 2.54 |
Entendiendo los tamaños de figura en Matplotlib
Matplotlib mide el tamaño de la figura en pulgadas, usando una tupla (ancho, alto).
La forma más directa de crear una figura con un tamaño fijo es:
from matplotlib.pyplot import figure
# Create a new figure (width=8 inches, height=6 inches)
figure(figsize=(8, 6))Esto garantiza que tu gráfico use el tamaño que especifiques, independientemente del conjunto de datos o del tipo de gráfico.
Ajustar el tamaño de la figura después de que exista
A veces una figura se crea automáticamente, por ejemplo mediante plt.plot() o un gráfico de Pandas. Aun así puedes cambiar su tamaño después:
import matplotlib.pyplot as plt
# Get the current figure
fig = plt.gcf()
# Change its size to 18.5 x 10.5 inches
fig.set_size_inches(18.5, 10.5)
# Save the resized figure
fig.savefig("figure.png", dpi=100)set_size_inches() es la forma más fiable de redimensionar figuras después de que existan.
Establecer un tamaño de figura global por defecto con rcParams
Si quieres que todos tus gráficos sigan el mismo tamaño (útil en notebooks y scripts), configura un valor global por defecto:
import matplotlib.pyplot as plt
# Make all future figures 20 x 3 inches
plt.rcParams["figure.figsize"] = (20, 3)Esto afecta a todos los gráficos posteriores hasta que se sobrescriba.
Establecer el tamaño de la figura en centímetros
Si necesitas tamaños métricos (por ejemplo, para artículos académicos), convierte de centímetros → pulgadas:
width_cm = 20
height_cm = 10
# Convert cm to inches
width_in = width_cm / 2.54
height_in = height_cm / 2.54
# Use the converted size
figure(figsize=(width_in, height_in))Esto funciona de forma idéntica al enfoque basado en pulgadas.
Restablecer o cambiar dinámicamente los valores globales por defecto
Para volver a la configuración original de Matplotlib:
plt.rcParams["figure.figsize"] = plt.rcParamsDefault["figure.figsize"]Esto es útil cuando un notebook mezcla gráficos pequeños y rápidos con figuras más grandes para publicación.
Controlar el tamaño de la figura con Pandas
Pandas se integra directamente con Matplotlib y también acepta figsize:
df['some_column'].plot(figsize=(10, 5))Para subplots:
fig, ax = plt.subplots(figsize=(10, 5))
df['some_column'].plot(ax=ax)Este método es especialmente conveniente en notebooks de análisis de datos.
Cambiar el tamaño de figura por defecto de Matplotlib para todos los gráficos
Usa esto si quieres que cada gráfico tenga automáticamente el mismo tamaño:
import matplotlib
matplotlib.rc("figure", figsize=(10, 5))Es similar a modificar rcParams directamente y funciona tanto en scripts como en notebooks.
🔍 Comparación de todos los métodos
| Método | Cuándo usarlo | Ejemplo |
|---|---|---|
figure(figsize=...) | Al crear una figura completamente nueva | Más recomendado |
set_size_inches() | Redimensionar una figura existente | Bueno para gráficos autogenerados |
plt.rcParams["figure.figsize"] | Establecer un tamaño global en un notebook | Muy común en EDA |
matplotlib.rc("figure", figsize=...) | Establecer valores globales en un script | Mejor para producción |
| Conversión a centímetros | Contexto académico, guías de editoriales | Para artículos en LaTeX |
df.plot(figsize=...) | Flujo de trabajo con Pandas | Conveniente para EDA rápida |
⚠️ Resolución de problemas: cuando figsize no funciona (problemas comunes)
1. Jupyter Notebook ignora figsize
Solución:
%matplotlib inline2. tight_layout corta las etiquetas
Usa:
plt.tight_layout()3. Al guardar la figura cambia el tamaño
Establece siempre el DPI explícitamente:
plt.savefig("output.png", dpi=150)4. Las fuentes o etiquetas cambian de escala inesperadamente
Desactiva el autoajuste:
plt.rcParams['figure.autolayout'] = False5. Los subplots se solapan
Aumenta el tamaño:
fig, ax = plt.subplots(figsize=(12, 8))Estas secciones de resolución de problemas están muy bien posicionadas en SEO para temas de Matplotlib y resuelven la frustración de muchos usuarios.
Alternativa a Matplotlib: visualiza datos con PyGWalker
Además de Matplotlib, puedes explorar tu DataFrame de pandas de forma visual usando PyGWalker, una herramienta de visualización de datos de arrastrar y soltar de código abierto:
Úsalo dentro de Jupyter:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)O pruébalo en línea:
Preguntas frecuentes
-
¿Cómo establezco el tamaño de la figura en Matplotlib?
Usafigure(figsize=(width, height)). -
¿Cómo redimensiono una figura existente?
Usafig.set_size_inches(w, h). -
¿Puedo cambiar el tamaño de la figura en gráficos de Pandas?
Sí, mediantefigsize=(w, h).
