Desmitificando %matplotlib inline
en Jupyter Notebooks

Si has estado experimentando con visualización de datos en Python en Jupyter Notebooks (o usando herramientas como Google Colab), quizás hayas visto una línea extraña al inicio de muchos notebooks: %matplotlib inline
. A primera vista, esto parece una especie de hechizo mágico — y en cierto modo, ¡lo es! En esta guía sencilla para principiantes, explicaremos qué hace realmente %matplotlib inline
, cuándo usarlo, cómo emplearlo (con ejemplos de código), y si hoy en día, en entornos modernos de Jupyter, aún es necesario. Al terminar, sabrás exactamente por qué este pequeño comando "mágico" aparece tan a menudo y cómo hace que tus gráficos de Matplotlib se muestren inline (justo debajo de tu código). ¡Así que vámonos!
¿Qué es %matplotlib inline
?
%matplotlib inline
es un comando mágico especial disponible en IPython y Jupyter notebooks. Las "magias" (indicadas con el %
) no son código Python normal, sino comandos que configuran la conducta del núcleo IPython (Documentación de magias integradas — IPython 9.1.0 (opens in a new tab)). En este caso, %matplotlib inline
indica a Jupyter que use el backend "inline" de Matplotlib, lo que significa que los gráficos se mostrarán inline dentro de la salida del notebook, justo debajo de la celda de código que los genera (Exploring Matplotlib Inline: A Quick Tutorial | DataCamp (opens in a new tab)) (Guía para principiantes en Matplotlib en Jupyter | Saturn Cloud Blog (opens in a new tab)).
En términos sencillos, usar %matplotlib inline
es como decirle a Jupyter: "Oye, cuando cree un gráfico con Matplotlib, muéstralo aquí mismo en el notebook, no en una ventana aparte." Sin este ajuste (lo que llamamos "sin esta opción"), Matplotlib podría intentar abrir una ventana externa o un visor interactivo para mostrar tu gráfico, o simplemente mostrar una representación textual del objeto del gráfico en lugar del gráfico real (Guía para principiantes en Matplotlib en Jupyter | Saturn Cloud Blog (opens in a new tab)). La función de %matplotlib inline
es evitar esa situación, embebiendo la salida del gráfico en la página del notebook.
¿Por qué "inline"? Internamente, Matplotlib tiene diferentes backends (pensados como motores o herramientas que usa para renderizar gráficos) (¿Qué hace %matplotlib inline
? | Medium (opens in a new tab)). Algunos backends abren una ventana externa para mostrar gráficos (como una ventana GUI), mientras otros los muestran dentro del notebook. El backend inline procesa el gráfico como una imagen estática dentro del propio notebook (¿Qué hace %matplotlib inline
? | Medium (opens in a new tab)). Cuando ejecutas %matplotlib inline
, eliges que Matplotlib use el backend inline para graficar. Esto es muy útil en análisis de datos, porque generalmente quieres tus gráficos y código en un solo lugar (de ahí el nombre "inline").
Y sí, la %
al inicio es quien da el nombre "magia" al comando — es una orden especial de Jupyter, no forma parte del Python estándar (Documentación de magias integradas — IPython 9.1.0 (opens in a new tab)). No usarías %matplotlib inline
en un script Python normal (porque provocaría un error de sintaxis allí), pero en una sesión de Jupyter o IPython, activa la configuración para mostrar gráficos en línea automáticamente.
¿Cuándo (y por qué) deberíamos usar %matplotlib inline
?
%matplotlib inline
es especialmente útil en entornos interactivos como Jupyter Notebook o JupyterLab, cuando quieres que tus gráficos aparezcan de inmediato como salida en tu notebook. Esto suele ser habitual en exploración de datos, ciencia de datos y tutoriales. Aquí algunos casos donde conviene usarlo:
-
Análisis interactivo de datos: Si estás explorando datos en un notebook, crearás muchos gráficos para visualizar patrones. La opción inline te permite ver cada gráfico justo debajo del código que lo generó, facilitando comparar código y resultado. No necesitas cambiar a otra ventana o interfaz; el gráfico aparece en línea, conservando tu flujo de trabajo (Guía para principiantes en Matplotlib en Jupyter | Saturn Cloud Blog (opens in a new tab)) (Guía para principiantes en Matplotlib en Jupyter | Saturn Cloud Blog (opens in a new tab)). Esto ayuda mucho a trabajar iterativamente: puedes ajustar un comando de gráfico y volver a correr la celda para ver la actualización inmediatamente.
-
Mantener resultados juntos: Los gráficos en línea hacen fácil compartir notebooks o guardar análisis. Cuando guardas el notebook (como un archivo HTML o PDF), los gráficos se embeben como imágenes. Otros podrán ver tus gráficos sin necesidad de archivos adicionales. Todo (código + gráficos) queda contenido en un solo archivo.
-
Datasets grandes o visualizaciones complejas: Cuando trabajas con datos pesados o gráficos detallados, puedes generar múltiples gráficos para entender distintas partes. El gráfico en línea permite apilar estos gráficos en la misma celda para desplazarlos y comparar (Guía para principiantes en Matplotlib en Jupyter | Saturn Cloud Blog (opens in a new tab)). También puedes intercalar explicaciones (texto markdown) entre gráficos, creando una narrativa visual — muy útil en notebooks educativos y tutoriales.
-
Uso en educación y tutoriales: Muchas guías ponen
%matplotlib inline
en el inicio para que los aprendices vean los gráficos justo en el cuaderno. Así evitan confusiones si no aparece ningún gráfico. (Nada más frustrante que correr una instrucción de gráficos y no ver nada, porque el gráfico se abre en una ventana oculta o requiere un paso adicional para mostrarse).
Por otro lado, si no estás trabajando en un entorno Jupyter — por ejemplo, en un script Python independiente o en la consola REPL fuera de IPython — entonces %matplotlib inline
no aplica. En scripts tradicionales, haces grafico y llamas plt.show()
para que aparezca en una ventana externa. La función mágica solo sirve en entornos IPython/Jupyter para integrar los gráficos en el notebook. Así que no usarías %matplotlib inline
en scripts normales y si lo hicieras, Python te dará error de sintaxis.
En resumen, usa %matplotlib inline
cuando quieres que los gráficos de Matplotlib aparezcan en tu notebook, justo debajo del código, sin pasos adicionales. Es casi siempre útil en análisis y visualización en notebooks.
Cómo usar %matplotlib inline
(Ejemplo)
Es muy simple: solo colócalo en una celda de Jupyter Notebook (usualmente al inicio, después de las importaciones). Eso configura todo para mostrar gráficos en línea. Generalmente, también importas Matplotlib (el módulo pyplot
) en esa misma celda o antes de empezar a graficar. Por ejemplo:
# Al inicio del Notebook
%matplotlib inline
import matplotlib.pyplot as plt
# Ahora puedes crear gráficos normalmente
plt.figure(figsize=(4,3))
plt.plot([1, 2, 3], [2, 4, 6], color="blue", marker="o")
plt.title("Ejemplo de gráfico")
plt.xlabel("Valores X")
plt.ylabel("Valores Y")
plt.show()
¿Qué pasa?
%matplotlib inline
— Configura el entorno para mostrar gráficos en línea. No produce salida visible, solo ajusta.- Importar
matplotlib.pyplot as plt
— común y recomendable para usar las funciones de graficado. - Crear un gráfico — en este caso, una línea simple con algunos datos y etiquetas.
plt.show()
— indica a Matplotlib que muestre el figura. En modo inline, muchas veces no es imprescindible, pero es buena práctica incluirlo. Garantiza que el gráfico aparece en la celda.
A partir de aquí, el gráfico aparecerá justo debajo de la celda después de ejecutarla. Si no usas %matplotlib inline
, puede que la visualización no funcione como esperas: puede abrirse una ventana externa, o no mostrarse nada si no llaman a plt.show()
.
¿Todavía necesitamos %matplotlib inline
hoy en día?
Podrías pensar: "Si es tan útil, ¿por qué dejar de usarlo?" La realidad es que en los entornos modernos de Jupyter, muchas veces ya no necesitas activar %matplotlib inline
explícitamente — ya está habilitado por defecto. (¿Qué hace %matplotlib inline
? | Medium (opens in a new tab)) (Guía para principiantes en Matplotlib en Jupyter | DataCamp (opens in a new tab)). Por ejemplo, si solo importas matplotlib.pyplot as plt
en un nuevo notebook, es probable que el backend ya esté en modo inline detrás de escenas, aunque no hayas usado la magia explícitamente. Por eso, algunos notebooks muestran gráficos automáticamente sin más configuraciones.
Incluso, la propia documentación oficial y reportes indican que en muchos casos no hace falta usar %matplotlib inline
para que los gráficos se muestren en línea, si usas funciones básicas (plt.plot()
o .plot()
de pandas). Solo importar matplotlib o pandas puede activar el backend inline, en las configuraciones típicas (Stack Overflow - ¿Sigo necesitando %matplotlib inline
? (opens in a new tab)). Si te olvidas de ponerlo, quizás no notes ninguna diferencia; los gráficos seguirán mostrándose en línea automáticamente.
¿Significa esto que nunca debes usar %matplotlib inline
? No exactamente. Algunas consideraciones:
- Claridad y documentación: Poner
%matplotlib inline
en la cabecera de tu notebook deja claro que quieres los gráficos en línea. Si alguien más ejecuta tu notebook en un entorno diferente, o en versiones antiguas, tener esa línea asegura que los gráficos saldrán en línea, sin depender de configuraciones internas (Guía para principiantes en Matplotlib en Jupyter | DataCamp (opens in a new tab)). Es un seguro con un clic, que evita confusiones. - Escenarios antiguos: Si usas versiones viejas de Jupyter o están trabajando en consolas o kernels remotos, quizás todavía necesitas activar esa magia para obtener gráficos en línea (ejemplo: JupyterLite en navegador), lo que hace que
%matplotlib inline
siga siendo útil. - Uso avanzado: Si usas Matplotlib sin
pyplot
, o en modo muy personalizado, en algunos casos puede que necesites traer esa magia para que los gráficos se integren automáticamente. Pero para la mayoría, esto no aplica. - No causa daño: Tener
%matplotlib inline
en tu código no suele causar problemas; puede ser redundante pero no negativo. Solo puede entrar en conflicto si lo pones después de modificar algunos ajustes, pero eso ya es en casos avanzados.
En conclusión: en entornos modernos de Jupyter, casi no hace falta poner %matplotlib inline
explícitamente, pero muchos aún lo colocan para mayor certeza y compatibilidad (sobre todo en notebooks compartidos o en entornos mezclados). Si lo agregas, no te causará problemas y te asegura que tus gráficos aparecerán inline sin sorpresas.
Cómo usar %matplotlib inline
(Resumen práctico)
- Solo colócalo en la primera celda del notebook, preferiblemente después de las importaciones:
%matplotlib inline
import matplotlib.pyplot as plt
- Crea tus gráficos normalmente, y aparecerán en línea:
plt.plot([1, 2, 3], [2, 4, 6])
plt.title("Ejemplo simple")
plt.show() # opcional en muchos casos, ya que en inline se muestra automáticamente
- Puedes seguir graficando sin preocuparte: los gráficos aparecerán justo debajo de la celda después de ejecutarla. No necesitas abrir ventanas ni llamadas adicionales a
plt.show()
en muchos casos.
Conclusión
En suma, %matplotlib inline
es un comando "mágico" que hace que los gráficos de Matplotlib aparezcan en tu notebook justo debajo del código. Aunque en versiones recientes de Jupyter no siempre es necesario, se sigue usando por hábito, claridad y compatibilidad. En navegadores y entornos modernos, muchas veces los gráficos se muestran automáticamente por defecto. Pero si quieres asegurarte o compartir notebooks que funcionen en diferentes entornos, incluir %matplotlib inline
sigue siendo una buena práctica.
¡Ahora ya sabes qué es, cuándo usarlo y por qué sigue siendo relevante en muchos escenarios!