¿Cuál es exactamente el uso de %matplotlib inline ?
Si no sabe qué es backend, puede leer esto: https://matplotlib.org/tutorials/introductory/usage.html#backends
Algunas personas usan matplotlib de forma interactiva desde el shell de python y tienen ventanas emergentes de trazado cuando escriben comandos. Algunas personas ejecutan cuadernos Jupyter y dibujan gráficos en línea para un análisis de datos rápido. Otros integran matplotlib en interfaces gráficas de usuario como wxpython o pygtk para crear aplicaciones ricas. Algunas personas usan matplotlib en scripts por lotes para generar imágenes postscript a partir de simulaciones numéricas, y otros ejecutan servidores de aplicaciones web para generar gráficos de forma dinámica. Para admitir todos estos casos de uso, matplotlib puede apuntar a diferentes salidas, y cada una de estas capacidades se denomina backend; el "frontend" es el código de cara al usuario, es decir, el código de trazado, mientras que el "backend" hace todo el trabajo duro entre bastidores para hacer la figura.
Entonces, cuando escribe %matplotlib inline, activa el backend en línea. Como se ha comentado en los posts anteriores:
Con este backend, el resultado de los comandos de trazado se muestra en línea dentro de los frontends como el cuaderno Jupyter, directamente debajo de la celda de código que lo produjo. Los gráficos resultantes también se almacenarán en el documento del cuaderno.
Comenzando con IPython 5.0 y matplotlib 2.0, puede evitar el uso de la magia específica de IPython y usar
matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()que también tienen las ventajas de trabajar fuera de IPython.
Simplemente significa que cualquier gráfico que estemos creando como parte de nuestro código aparecerá en el mismo cuaderno y no en una ventana separada, lo que sucedería si no hubiéramos usado esta declaración mágica.
Siempre que esté ejecutando Jupyter Notebook, el comando en línea %matplotlib hará que los resultados de su gráfico aparezcan en el cuaderno, también se pueden almacenar.
Para explicarlo claro:
Si no te gusta así:
agregar %matplotlib inline
y ahí lo tienes en tu libreta jupyter.
TL;RD
%matplotlib inline : muestra la salida en líneaEl kernel de IPython tiene la capacidad de mostrar gráficos mediante la ejecución de código. El kernel de IPython está diseñado para funcionar a la perfección con la biblioteca de trazado de matplotlib para proporcionar esta funcionalidad.
%matplotlibes un comando mágico que realiza la configuración tras bambalinas necesaria para que IPython funcione correctamente junto conmatplotlib; no ejecuta ningún comando de importación de Python, es decir, no se agregan nombres al espacio de nombres.
%matplotlib(disponible solo para Jupyter Notebook y Jupyter QtConsole)
%matplotlib inline (valores válidos 'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template' )
%matplotlib gtkEjemplo: GTK3Agg: una representación de Agg en un lienzo GTK 3.x (requiere PyGObject y pycairo o cairocffi).
Más detalles sobre los backends interactivos de matplotlib: aquí
Comenzando con
IPython 5.0ymatplotlib 2.0, puede evitar el uso de la magia específica de IPython y usarmatplotlib.pyplot.ion()/matplotlib.pyplot.ioff()que también tienen las ventajas de trabajar fuera de IPython.
Consulte: Salida enriquecida de IPython - Trazado interactivo
Si desea agregar gráficos a su cuaderno Jupyter, entonces %matplotlib inline es una solución estándar. Y hay otros comandos mágicos que usarán matplotlib de forma interactiva dentro de Jupyter.
%matplotlib : cualquier comando plt plot ahora hará que se abra una ventana de figura, y se pueden ejecutar más comandos para actualizar el gráfico. Algunos cambios no se dibujarán automáticamente, para forzar una actualización, use plt.draw()
%matplotlib notebook : dará lugar a gráficos interactivos incrustados en el cuaderno, puede hacer zoom y cambiar el tamaño de la figura
%matplotlib inline : solo dibuja imágenes estáticas en el cuaderno
No es obligatorio escribir eso. Funcionó bien para mí sin la función mágica ( %matplotlib ). Estoy usando el compilador Sypder, uno que viene con Anaconda.
%matplotlib es una función mágica en IPython. Citaré la documentación relevante aquí para que la lea por conveniencia:
IPython tiene un conjunto de 'funciones mágicas' predefinidas a las que puede llamar con una sintaxis de estilo de línea de comando. Hay dos tipos de magias, orientadas a líneas y orientadas a células. Las líneas mágicas tienen el prefijo % y funcionan de manera muy similar a las llamadas de línea de comandos del sistema operativo: obtienen como argumento el resto de la línea, donde los argumentos se pasan sin paréntesis ni comillas. Las líneas mágicas pueden devolver resultados y se pueden usar en el lado derecho de una tarea. Las celdas mágicas tienen el prefijo doble %%, y son funciones que obtienen como argumento no solo el resto de la línea, sino también las líneas debajo de ella en un argumento separado.
%matplotlib inline establece el backend de matplotlib en el backend 'en línea' :
Con este backend, el resultado de los comandos de trazado se muestra en línea dentro de los frontends como el cuaderno Jupyter, directamente debajo de la celda de código que lo produjo. Los gráficos resultantes también se almacenarán en el documento del cuaderno.
Al usar el backend 'en línea', sus gráficos de matplotlib se incluirán en su cuaderno, junto al código. También puede valer la pena leer Cómo hacer que el cuaderno matplotlib de IPython se trace en línea como referencia sobre cómo usarlo en su código.
Si también desea interactividad, puede usar el backend nbagg con %matplotlib notebook (en IPython 3.x), como se describe aquí .
Siempre que esté ejecutando IPython, %matplotlib inline hará que los resultados de su gráfico aparezcan y se almacenen en el cuaderno.
Según la documentación
Para configurar esto, antes de realizar cualquier trazado o importación de
matplotlib, debe ejecutar el%matplotlib magic command. Esto realiza la configuración tras bambalinas necesaria para que IPython funcione correctamente junto conmatplotlib; sin embargo, en realidad no ejecuta ningún comando de importación de Python, es decir, no se agregan nombres al espacio de nombres.Un backend particularmente interesante, proporcionado por IPython, es el backend
inline. Solo está disponible para Jupyter Notebook y Jupyter QtConsole. Se puede invocar de la siguiente manera:%matplotlib inlineCon este backend, el resultado de los comandos de trazado se muestra en línea dentro de los frontends como el cuaderno Jupyter, directamente debajo de la celda de código que lo produjo. Los gráficos resultantes también se almacenarán en el documento del cuaderno.