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