Come posso aprire la finestra Matplotlib intertriggers nel notebook IPython?

Sto usando IPython con –pylab = inline e vorrei a volte passare rapidamente alla GUI Matplotlib intertriggers e zoomabile per visualizzare i grafici (quello che si apre quando si traccia qualcosa in una console Python terminale). Come potrei farlo? Preferibilmente senza lasciare o riavviare il mio notebook.

Il problema con i grafici in linea nel notebook IPy è che hanno una risoluzione limitata e non posso ingrandirli per vedere alcune parti più piccole. Con la GUI Maptlotlib che inizia da un terminale posso selezionare un rettangolo del grafico che voglio ingrandire e gli assi si regolano di conseguenza. Ho provato a sperimentare

from matplotlib import interactive interactive(True) 

e

 interactive(False) 

ma questo non ha fatto nulla Non sono riuscito a trovare nessun suggerimento online.

    Secondo la documentazione , dovresti essere in grado di passare avanti e indietro in questo modo:

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

    e questo farà apparire una normale finestra di stampa (potrebbe essere necessario un riavvio sul notebook).

    Spero che aiuti.

    Se tutto quello che vuoi fare è passare da grafici in linea a quelli interattivi e indietro (in modo da poter eseguire pan / zoom), è meglio usare% matplotlib magic.

     #interactive plotting in separate window %matplotlib qt 

    e ritorno a html

     #normal charts inside notebooks %matplotlib inline 

    % La magia di pylab importa un sacco di altre cose e può anche portare a un conflitto. Lo fa “da pylab import *”.

    Puoi anche usare il nuovo backend per notebook (aggiunto in matplotlib 1.4):

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

    Se vuoi avere più interattività nei tuoi grafici, puoi guardare mpld3 e bokeh . mpld3 è ottimo, se non si hanno tonnellate di punti dati (ad esempio <5k +) e si desidera utilizzare la sintassi matplotlib normale, ma più interattività, rispetto al notebook matplotlib%. Bokeh può gestire molti dati, ma è necessario conoscerne la sintassi poiché è una libreria separata.

    Inoltre puoi controllare pivottablejs (pip install pivottablejs)

     from pivottablejs import pivot_ui pivot_ui(df) 

    Tuttavia, l’esplorazione dei dati intertriggers è interessante, ma può compromettere totalmente la riproducibilità. È successo a me, quindi cerco di usarlo solo nella fase iniziale e passare a Matplotlib / Seaborn in linea pura, una volta ottenuto il feeling con i dati.

    A partire da matplotlib 1.4.0 c’è ora un backend interattivo da usare nel notebook

     %matplotlib notebook 

    Ci sono alcune versioni di IPython che non hanno quell’alias registrato, il fall back è:

     %matplotlib nbagg 

    Se non funziona, aggiorna IPython.

    Per giocare con questo, goto tmpnb.org

    e incolla

     %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') 

    in una cella di codice (o semplicemente modificare il taccuino demo di Python esistente)

    Una soluzione migliore per il tuo problema potrebbe essere la libreria Charts . Ti permette di usare l’eccellente libreria javascript di Highcharts per creare trame belle e interattive. Highcharts utilizza il tag svg HTML in modo che tutti i tuoi grafici siano effettivamente immagini vettoriali.

    Alcune caratteristiche:

    • Grafici vettoriali che puoi scaricare nei formati .png, .jpg e .svg per non incorrere in problemi di risoluzione
    • Grafici interattivi (zoom, scorrimento, passaggio del mouse sui punti, …)
    • Utilizzabile in un notebook IPython
    • Esplora centinaia di strutture di dati allo stesso tempo utilizzando le funzionalità di stampa asincrona.

    Disclaimer: sono lo sviluppatore della libreria

    Sto usando ipython in “jupyter QTConsole” da Anaconda su http://www.continuum.io/downloads il 28/05/20117.

    Ecco un esempio per sfogliare avanti e indietro tra una finestra separata e una modalità di trama inline usando la magia 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... 

    Riavvia il kernel e cancella l’output (se non si inizia con un nuovo notebook), quindi esegui

     %matplotlib tk 

    Per maggiori informazioni vai a Plotting with matplotlib