2013-07-09 7 views
5

Angenommen, ich habe einige Daten, und ich möchte ein Diagramm dieser Daten erstellen, indem Sie es an eine benutzerdefinierte Plotfunktion (myplot()) übergeben. Ich benutze die Module von Matplotlib in myplot().Wie eine Funktion eine Zahl in Python (mit Matplotlib) zurückgeben?

Ich möchte myplot(), um den Griff zu einer Figur zurückgeben, und nicht plot Anzeige der Handlung, wenn ich diese Funktion aufrufen. Hier ist ein Beispielcode und eine Ausgabe von iPython.

enter image description here

Ich habe zwei Fragen in Bezug auf diese:

  1. Warum ich immer noch ein Grundstück sehen, auch wenn ich die Ausgabe von MyPlot bin zuweisen() bis f?
  2. Was brauche ich, um dieses Diagramm zu unterdrücken, wenn ich die Ausgabe von myplot() einer Variablen zuweise?
+0

Dies ist nur eine iPython Notebook-Funktion, oder? Weil ich keine Handlung sehe, wenn ich die Zahlen in IDLE übergebe. –

Antwort

5

starten ipython mit

ipython notebook

statt

ipython notebook --pylab=inline

enter image description here

+1

Ich denke, man muss nicht die ganze Notebook-Session im Non-Inline-Modus starten. Sie können das Inline-Backend-Verhalten mit dem folgenden Befehl steuern. '% config InlineBackend.close_figures = False' Dies verhindert, dass Ihre Plots sofort geschlossen werden (also im Browser angezeigt werden). – ala

1

Wenn Sie nicht das gesamte Notebook in nicht-Inline-Modus zu starten Sie können einfach den folgenden Code verwenden:

%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

Dies hat nicht funktioniert. Ich bekomme immer noch die gleiche Ausgabe wie in meiner Frage gezeigt. – siva82kb

Verwandte Themen