Propósito de "% matplotlib en línea"

483

¿Podría alguien explicarme de qué sirve exactamente %matplotlib inline?

Rishabh
fuente
22
Es una función mágica que representa la figura en un cuaderno (en lugar de mostrar un volcado del objeto de la figura). Un tutorial simple de Matplotlib se encuentra aquí data-blogger.com/2017/11/15/… .
www.data-blogger.com
77
Puede comprobar los dorsales disponibles (como inline) mediante la introducción de: %matplotlib --list.
Luis

Respuestas:

286

%matplotlibEs 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 magias de línea tienen como prefijo el carácter% 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 pueden usarse en el lado derecho de una tarea. La magia de las celdas tiene el prefijo%%, 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, la salida de los comandos de trazado se muestra en línea dentro de las interfaces como el cuaderno Jupyter, directamente debajo de la celda de código que lo produjo. Las parcelas resultantes también se almacenarán en el documento del cuaderno.

Cuando utilice el backend 'en línea', sus gráficos matplotlib se incluirán en su computadora portátil, junto al código. Puede valer la pena leer también Cómo hacer que el cuaderno de IPython matplotlib trace en línea para 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í .

Aurora0001
fuente
44
% matplotlib en línea ^ SyntaxError: sintaxis no válida
44
@Jadda ¿Estás usando IPython? Si no, obtendrá un error de sintaxis, ya que no es válido CPython (el intérprete 'estándar' para Python). No tiene mucho sentido usarlo de todos modos, a menos que esté usando una computadora portátil IPython, ya que el objetivo es representar las parcelas en línea con una computadora portátil.
Aurora0001
Si. Estoy usando esto en Spyder IDE (Parte de Anaconda) para implementar la API de detección de objetos
3
En ese caso, @Jadda, parece que tienes una nueva pregunta que hacer. Debe incluir todos los detalles relevantes allí para que pueda obtener más atención a su pregunta que en los comentarios de esta respuesta. Buena suerte.
Aurora0001
2
ok, pero cuál es la alternativa: ¿cómo puedo ver las tramas si no hay tal magia activada?
JaakL
77

Siempre que esté ejecutando IPython, %matplotlib inlinehará que los resultados de su trazado aparezcan y se almacenen en el cuaderno.

De acuerdo con la documentación

Para configurar esto, antes de realizar cualquier trazado o importación de matplotlibdebe ejecutar el %matplotlib magic command. Esto realiza la configuración necesaria detrás de escena para que IPython funcione correctamente de la mano matplotlib; 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 inlinebackend. Esto está disponible solo para el Jupyter Notebook y el Jupyter QtConsole. Se puede invocar de la siguiente manera:

%matplotlib inline

Con este backend, la salida de los comandos de trazado se muestra en línea dentro de las interfaces como el cuaderno Jupyter, directamente debajo de la celda de código que lo produjo. Las parcelas resultantes también se almacenarán en el documento del cuaderno.

matusko
fuente
32

Si desea agregar tramas a su computadora portátil Jupyter, entonces %matplotlib inlinees una solución estándar. Y hay otros comandos mágicos que se usarán matplotlibinteractivamente dentro de Jupyter.

%matplotlib: cualquier pltcomando de trazado ahora abrirá una ventana de figura, y se pueden ejecutar más comandos para actualizar el trazado. Algunos cambios no se dibujarán automáticamente, para forzar una actualización, useplt.draw()

%matplotlib notebook: conducirá a tramas interactivas incrustadas 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

Yossarian42
fuente
7

Comenzando con IPython 5.0 y matplotlib 2.0, puede evitar el uso de la magia específica de IPython y el uso matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()que tiene las ventajas de trabajar también fuera de IPython.

documentos de ipython

Vicki B
fuente
Creo que esto es diferente de cambiar el backend. A menos que el backend sea inline, los gráficos se generan en ventanas externas y debe usar display () para mostrarlos en el cuaderno.
Vincenzooo
5

Simplemente significa que cualquier gráfico que estamos 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.

Arushi Jain
fuente
4

Si no sabe qué es el 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 aparecen ventanas emergentes de trazado cuando escriben comandos. Algunas personas ejecutan cuadernos Jupyter y dibujan diagramas en línea para un análisis rápido de datos. 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 otras ejecutan servidores de aplicaciones web para servir gráficos dinámicamente. Para admitir todos estos casos de uso, matplotlib puede apuntar a diferentes salidas, y cada una de estas capacidades se denomina back-end; 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 detrás de escena para hacer la figura.

Entonces, cuando escribe% matplotlib en línea, se activa el backend en línea. Como se discutió en las publicaciones anteriores:

Con este backend, la salida de los comandos de trazado se muestra en línea dentro de las interfaces como el cuaderno Jupyter, directamente debajo de la celda de código que lo produjo. Las parcelas resultantes también se almacenarán en el documento del cuaderno.

Vihang Khare
fuente
3

Para explicarlo claramente:

Si no te gusta así:

ingrese la descripción de la imagen aquí

añadir %matplotlib inline

ingrese la descripción de la imagen aquí

y ahí lo tienes en tu cuaderno jupyter.

prosti
fuente
2

TL; DR

%matplotlib inline - Muestra la salida en línea


El kernel de IPython tiene la capacidad de mostrar diagramas ejecutando código. El kernel de IPython está diseñado para funcionar sin problemas con la biblioteca de trazado matplotlib para proporcionar esta funcionalidad.

%matplotlibes un comando mágico que realiza la configuración necesaria detrás de escena para que IPython funcione correctamente de la mano matplotlib; no ejecuta ningún comando de importación de Python, es decir, no se agregan nombres al espacio de nombres.

Mostrar salida en ventana separada

%matplotlib

Mostrar salida en línea

(disponible solo para Jupyter Notebook y Jupyter QtConsole)

%matplotlib inline

Pantalla con backends interactivos

(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 gtk

Ejemplo: GTK3Agg: representación de Agg en un lienzo GTK 3.x (requiere PyGObject y pycairo o cairocffi).

Más detalles sobre backends interactivos matplotlib: aquí


A partir de IPython 5.0y matplotlib 2.0se puede evitar el uso de la magia específica de IPython y el uso matplotlib.pyplot.ion()/ matplotlib.pyplot.ioff() la que tiene las ventajas de trabajar fuera del IPython también.

Consulte: Salida enriquecida de IPython : trazado interactivo

Ani Menon
fuente
Pregunta novata real aquí, lo siento ... ¿qué es el "núcleo de IPython" y qué es un "comando mágico"? ¿Python de repente se separó de mí y se volvió no pitónico? Nunca he oído hablar de estos conceptos.
lb_so
Para un cuaderno de python (ipynb): un kernel de ipython o jupyter kernal es la versión de python (y dependencias) que utilizará el proyecto. Puede iniciar un cuaderno jupyter y luego cambiar los kernals para ejecutar las celdas con una configuración diferente de python y configurar variables de entorno y mucho más.
Ani Menon
El comando @Ib_so Magic es una función de ipython / jupyter. Leer más aquí.
Ani Menon
0

Siempre que esté ejecutando Jupyter Notebook, el comando en línea% matplotlib hará que sus resultados de trazado aparezcan en el cuaderno, también se pueden almacenar.

Ashiq Imran
fuente
-8

No es obligatorio escribir eso. Funcionó bien para mí sin ( %matplotlib) función mágica. Estoy usando el compilador Sypder, uno que viene en Anaconda.

usuario9196865
fuente
13
Spyder es un IDE, no un compilador.
Matthieu Brucher
3
Si bien su respuesta no respondió la pregunta del OP, sí respondió la mía. Gracias.
EngrStudent