¿Cómo puedo abrir la ventana Matplotlib interactiva en IPython notebook?


Estoy usando IPython con inline pylab=inline y a veces me gustaría cambiar rápidamente a la interfaz gráfica de usuario Matplotlib interactiva y ampliable para ver gráficas (la que aparece cuando se dibuja algo en una consola Python terminal). ¿Cómo podría hacer eso? Preferiblemente sin salir o reiniciar mi cuaderno.

El problema con los gráficos en línea en IPY notebook es que son de una resolución limitada y no puedo hacer zoom en ellos para ver algunas partes más pequeñas. Con la GUI Maptlotlib que comienza desde un terminal Puedo seleccionar un rectángulo del gráfico que quiero acercar y los ejes se ajustan en consecuencia. He intentado experimentar con

from matplotlib import interactive
interactive(True)

Y

interactive(False)

Pero eso no hizo nada. No pude encontrar ninguna pista en línea tampoco.

Author: metakermit, 2013-01-10

6 answers

De acuerdo con la documentación , usted debe ser capaz de cambiar hacia adelante y hacia atrás de esta manera:

In [2]: %matplotlib inline 
In [3]: plot(...)

In [4]: %matplotlib qt  # wx, gtk, osx, tk, empty uses default
In [5]: plot(...) 

Y que aparecerá una ventana de trazado normal (un reinicio en el cuaderno puede ser necesario).

Espero que esto ayude.

 91
Author: Adrian Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-25 20:07:22

Si todo lo que desea hacer es cambiar de gráficos en línea a interactivos y viceversa (para que pueda desplazarse/hacer zoom), es mejor usar %matplotlib magic.

#interactive plotting in separate window
%matplotlib qt 

Y volver a html

#normal charts inside notebooks
%matplotlib inline 

%pylab magic importa un montón de otras cosas e incluso puede resultar en un conflicto. Hace " from pylab import*".

También puede usar el nuevo backend de notebook (agregado en matplotlib 1.4):

#interactive charts inside notebooks, matplotlib 1.4+
%matplotlib notebook 

Si desea tener más interactividad en sus gráficos, puede mirar mpld3 y bokeh. mpld3 es genial, si no tiene toneladas de puntos de datos (por ejemplo,

También puede comprobar hacia fuera pivottablejs (pip instalar pivottablejs)

from pivottablejs import pivot_ui
pivot_ui(df)

Por genial que sea la exploración interactiva de datos, puede interferir totalmente con la reproducibilidad. Me ha pasado a mí, así que intente usarlo solo en la etapa muy temprana y cambie a matplotlib/seaborn en línea pura, una vez que tenga la idea de los datos.

 45
Author: volodymyr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-04 15:07:19

Comenzando con matplotlib 1.4.0 ahora hay un backend interactivo para usar en el notebook

%matplotlib notebook

Hay algunas versiones de IPython que no tienen ese alias registrado, la alternativa es:

%matplotlib nbagg

Si eso no funciona actualizar IPython.

Para jugar con esto, goto tmpnb.org

Y pegar

%matplotlib notebook

import pandas as pd
import numpy as np
import matplotlib

from matplotlib import pyplot as plt
import seaborn as sns

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts = ts.cumsum()

df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index,
                  columns=['A', 'B', 'C', 'D'])
df = df.cumsum()
df.plot(); plt.legend(loc='best')    

En una celda de código (o simplemente modifique el cuaderno de demostración de python existente)

 19
Author: tacaswell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-10 15:31:57

Una mejor solución para su problema podría ser la biblioteca de gráficos . Le permite usar la excelente biblioteca de javascript Highcharts para crear gráficas hermosas e interactivas. Highcharts usa la etiqueta HTML svg por lo que todos sus gráficos son en realidad imágenes vectoriales.

Algunas características:

  • Gráficos vectoriales que puede descargar en .png, .jpg y .formatos svg para que nunca se encuentre con problemas de resolución
  • Gráficos interactivos (zoom, diapositiva, pasar el cursor sobre punto, ...)
  • Utilizable en un cuaderno IPython
  • Explore cientos de estructuras de datos al mismo tiempo utilizando las capacidades de trazado asíncrono.

Descargo de responsabilidad: Soy el desarrollador de la biblioteca

 3
Author: arnoutaertgeerts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-22 13:00:38

Estoy usando ipython en "jupyter QTConsole" de Anaconda en www.continuum.io/downloads el 28/5/20117.

Aquí hay un ejemplo para ir y venir entre una ventana separada y un modo de trazado en línea usando ipython magic.

>>> import matplotlib.pyplot as plt

# data to plot
>>> x1 = [x for x in range(20)]

# Show in separate window
>>> %matplotlib
>>> plt.plot(x1)
>>> plt.close() 

# Show in console window
>>> %matplotlib inline
>>> plt.plot(x1)
>>> plt.close() 

# Show in separate window
>>> %matplotlib
>>> plt.plot(x1)
>>> plt.close() 

# Show in console window
>>> %matplotlib inline
>>> plt.plot(x1)
>>> plt.close() 

# Note: the %matplotlib magic above causes:
#      plt.plot(...) 
# to implicitly include a:
#      plt.show()
# after the command.
#
# (Not sure how to turn off this behavior
# so that it matches behavior without using %matplotlib magic...)
# but its ok for interactive work...
 3
Author: Bill Moore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-28 15:43:43

Reinicie el kernel y borre la salida (si no comienza con un nuevo notebook), luego ejecute

%matplotlib tk

Para más información vaya a Trazado con matplotlib

 2
Author: Marcin Lentner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-19 18:18:29