2013-07-09 8 views
5

Załóżmy, że mam pewne dane i chcę utworzyć wykres tych danych, przekazując je do niestandardowej funkcji drukowania (myplot()). Używam modułów matplotlib w myplot().Jak uzyskać funkcję zwracania liczby w python (przy użyciu matplotlib)?

Chciałbym, aby moja działka() zwróciła uchwyt do figury, a nie działka wyświetla wykres po wywołaniu tej funkcji. Oto przykładowy kod i wynik z iPython.

enter image description here

Mam dwa pytania dotyczące tego produktu:

  1. Dlaczego wciąż widzę działkę, chociaż jestem przypisywania wyjście myplot() do f?
  2. Co jest potrzebne, aby pominąć ten wątek, gdy przypisuję wynik zmiennej myplot() do zmiennej?
+0

To jest tylko funkcja iPython Notebook, prawda? Ponieważ nie widzę fabuły, kiedy przekazuję liczby w IDLE. –

Odpowiedz

5

start ipython z

ipython notebook

zamiast

ipython notebook --pylab=inline

enter image description here

+1

Myślę, że nie musisz zaczynać całej sesji zeszytowej w trybie nieliniowym. Możesz kontrolować zachowanie wewnętrznego backendu za pomocą następującego polecenia. '% config InlineBackend.close_figures = False' Pozwoli to na natychmiastowe zamknięcie działek (tak jak pokazano w przeglądarce). – ala

1

Jeśli nie chcesz, aby uruchomić cały notebook w non-inline-modus możesz po prostu użyć następującego kodu:

%config InlineBackend.close_figures = False 

def myplot(t,x): 
    fig = figure() 
    x = plot(t,x) 
    fig.savefig('plot.png') # This is just to show the figure is still generated 
    return fig 

t = arange(0,6,0.01) 
x = sin(t) 

f = myplot(t,x) 
+0

To nie działało. Nadal mam taki sam wynik, jak pokazano na moim pytaniu. – siva82kb