matrices marcadores graficos graficas graficar grafica dispersion diagrama con matplotlib ipython-notebook

marcadores - ¿Cómo puedo abrir la ventana interactiva Matplotlib en el cuaderno IPython?



python graficos 2d (6)

Estoy usando IPython con --pylab = en línea y a veces me gustaría cambiar rápidamente a la GUI interactiva y con zoom de Matplotlib para ver gráficas (la que aparece cuando trazas algo en una terminal de la consola de Python). ¿Cómo podría hacer eso? Preferiblemente sin salir o reiniciar mi computadora portátil.

El problema con los diagramas en línea en el cuaderno IPy es que tienen una resolución limitada y no puedo acercarlos para ver algunas partes más pequeñas. Con la GUI de Maptlotlib que se inicia desde un terminal, puedo seleccionar un rectángulo del gráfico que quiero ampliar y los ejes se ajustan en consecuencia. Intenté 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.


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, el retroceso es:

%matplotlib nbagg

Si eso no funciona, actualice su 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 modificar el cuaderno de demostración existente de python)


De acuerdo con la documentation , usted debería poder cambiar hacia adelante y 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 aparecerá una ventana de diagramación regular (puede ser necesario reiniciar en el notebook).

Espero que esto ayude.


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

Aquí hay un ejemplo para alternar entre una ventana separada y un modo de diagrama en línea usando la magia de ipython.

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


Reinicie kernel y borre la salida (si no está comenzando con la nueva notebook), luego ejecute

%matplotlib tk

Para obtener más información, vaya a Trazar con matplotlib


Si todo lo que quiere hacer es cambiar de parcelas en línea a interactivas y viceversa (para poder desplazarse / acercarse), es mejor utilizar la magia de% matplotlib.

#interactive plotting in separate window %matplotlib qt

y de vuelta a html

#normal charts inside notebooks %matplotlib inline

La magia% pylab importa un montón de otras cosas y puede incluso generar un conflicto. Lo hace "de 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, <5k +) y desea utilizar la sintaxis matplotlib normal, pero más interactividad, en comparación con el cuaderno% matplotlib. Bokeh puede manejar una gran cantidad de datos, pero necesita aprender su sintaxis ya que es una biblioteca separada.

También puedes echar un vistazo a pivottablejs (pip install pivottablejs)

from pivottablejs import pivot_ui pivot_ui(df)

Independientemente de la buena exploración interactiva de datos, puede interferir totalmente con la reproducibilidad. Me ha sucedido a mí, así que trato de usarlo solo en la etapa más temprana y cambiar a matplotlib / seaborn puro en línea, una vez que tengo la sensación de los datos.


Una mejor solución para su problema podría ser la biblioteca de Charts . Le permite utilizar la excelente biblioteca de JavaScript de Highcharts para crear tramas hermosas e interactivas. Highcharts usa la etiqueta HTML svg para que todos tus gráficos sean en realidad imágenes vectoriales.

Algunas caracteristicas:

  • Trazados de vectores que puede descargar en formatos .png, .jpg y .svg para que nunca se encuentre con problemas de resolución
  • Gráficos interactivos (acercar, deslizar, colocar el cursor sobre los puntos, ...)
  • 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