Come rendere inline la trama matplotlib del notebook IPython


Answers

Se la tua versione di matplotlib è superiore a 1.4, è anche possibile utilizzarla

IPython 3.xe versioni successive

%matplotlib notebook

import matplotlib.pyplot as plt

versioni precedenti

%matplotlib nbagg

import matplotlib.pyplot as plt

Entrambi attivano il backend nbagg , che abilita l'interattività.

Question

Sto cercando di utilizzare il blocco appunti IPython su MacOS X con Python 2.7.2 e IPython 1.1.0.

Non riesco a visualizzare la grafica di matplotlib in linea.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

Ho anche provato %pylab inline e gli argomenti della riga di comando ipython --pylab=inline ma questo non fa differenza.

x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp')
plt.show()

Invece di grafica in linea, ottengo questo:

<matplotlib.figure.Figure at 0x110b9c450>

E matplotlib.get_backend() mostra che ho il backend 'module://IPython.kernel.zmq.pylab.backend_inline' .




È possibile simulare questo problema con un errore di sintassi, tuttavia, %matplotlib inline non risolverà il problema.

Innanzitutto un esempio del modo giusto per creare una trama. Tutto funziona come previsto con le importazioni e la magia fornite da .

df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))

df_randNumbers1.ix[:,["A","B"]].plot.kde()

Tuttavia, lasciando il () alla fine del tipo di trama si riceve un non ambiguo errore.

Codice Erronious:

df_randNumbers1.ix[:,["A","B"]].plot.kde

Errore di esempio:

<bound method FramePlotMethods.kde of <pandas.tools.plotting.FramePlotMethods object at 0x000001DDAF029588>>

Oltre a questo messaggio di una riga, non vi è traccia dello stack o altra ragione ovvia per pensare di aver commesso un errore di sintassi. La trama non viene stampata.







Su Ubuntu puoi rimuovere %matplotlib inline fintanto che hai plt.show() dopo la creazione del grafico.




Non sono sicuro del motivo per cui joaquin ha pubblicato la sua risposta come commento, ma è la risposta corretta:

avvia ipython con ipython notebook --pylab inline

Modifica: Ok, questo è ora deprecato come da commento qui sotto. Usa la magia% pylab.