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




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




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







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.