Skip to content

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 figsize al crear nuevas figuras
  • Ajuste de tamaños de figuras ya existentes
  • Uso de rcParams para 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

TareaMejor métodoEjemplo
Establecer tamaño para una nueva figuraplt.figure(figsize=(w, h))plt.figure(figsize=(8, 6))
Cambiar el tamaño de una figura existentefig.set_size_inches(w, h)fig.set_size_inches(12, 4)
Establecer tamaño global por defectoplt.rcParams["figure.figsize"] = ...(12, 6)
Establecer tamaño en un gráfico de Pandasdf.plot(figsize=(w, h))(10, 5)
Usar centímetrosConvertir cm → pulgadasw_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étodoCuándo usarloEjemplo
figure(figsize=...)Al crear una figura completamente nuevaMás recomendado
set_size_inches()Redimensionar una figura existenteBueno para gráficos autogenerados
plt.rcParams["figure.figsize"]Establecer un tamaño global en un notebookMuy común en EDA
matplotlib.rc("figure", figsize=...)Establecer valores globales en un scriptMejor para producción
Conversión a centímetrosContexto académico, guías de editorialesPara artículos en LaTeX
df.plot(figsize=...)Flujo de trabajo con PandasConveniente para EDA rápida

⚠️ Resolución de problemas: cuando figsize no funciona (problemas comunes)

1. Jupyter Notebook ignora figsize

Solución:

%matplotlib inline

2. 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'] = False

5. 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:

PyGWalker for Data visualization (opens in a new tab)

Úsalo dentro de Jupyter:

pip install pygwalker
import pygwalker as pyg
 
gwalker = pyg.walk(df)

O pruébalo en línea:

Kaggle NotebookGoogle ColabGitHub ⭐
https://www.kaggle.com/asmdef/pygwalker-test (opens in a new tab)https://colab.research.google.com/drive/171QUQeq-uTLgSj1u-P9DQig7Md1kpXQ2 (opens in a new tab)https://github.com/Kanaries/pygwalker (opens in a new tab)

Preguntas frecuentes

  1. ¿Cómo establezco el tamaño de la figura en Matplotlib?
    Usa figure(figsize=(width, height)).

  2. ¿Cómo redimensiono una figura existente?
    Usa fig.set_size_inches(w, h).

  3. ¿Puedo cambiar el tamaño de la figura en gráficos de Pandas?
    Sí, mediante figsize=(w, h).