Matplotlib.pyplot: Öffnen Sie eine neue Figur Umwelt
In pyplot, wenn ich plt.plot(x)
scheint es intern führen Sie die folgende Logik:
1) Wenn ein Bild bereits geöffnet ist, verwenden Sie diese Abbildung, ansonsten erstellen Sie eine neue ein.
2) Wenn eine der Achsen in dieser Abbildung ist bereits geöffnet, verwenden, die Achsen, da sonst eine neue erstellen.
3) Anschlag auf die Achse.
Ich Frage mich, wie kann ich erzwingen, Schritt (1) zu öffnen, eine neue Figur der nächsten Zeit einige zeichnen-Befehl aufgerufen wird. So etwas wie
plt.plot(x1)
with new_figure_environment(): # Ensure that plot commands within this go to new figures
some_function()
plt.show()
Wenn some_function
enthält:
def some_function():
plt.plot(x1)
Dann möchte ich zu öffnen, eine neue Figur, aber wenn es sich nicht enthalten, eine plot-Funktion dann weiß ich nicht.
- Warum würden Sie geben
with new_figure_environment():
in Ihrem code, wenn Sie nicht plot etwas auf die neue Figur? In umgekehrter, das bedeutet, dass, wenn Sie wollen, dass etwas aufgezeichnet, um eine neue Figur, die Sie gebenplt.figure()
; wenn Sie nicht zeichnen möchten etwas zu einer neuen Figur, die Sie nicht gebenplt.figure()
. - Vielleicht
plt.get_fignums
wird Ihnen helfen. Es gibt eine Liste der bestehenden Figur zahlen. Es gibt eine Liste von der Länge null, wenn es keine vorhandenen Figuren. - Ich muss nicht unbedingt im Voraus wissen, was der code genannt wird in meiner Umgebung. In meinem Fall, in der
with
block, rufe ich eine Funktion anzeigen, die angegeben ist, an anderer Stelle und die möglicherweise oder möglicherweise nicht verwenden matplotlib. - In diesem Fall rufen Sie
plt.figure()
im inneren desdisplay
Funktion. - Ich kann nicht die Kontrolle über die display-Funktion.
- Ich umformuliert zu klären
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie zeichnen möchten, in einer bestimmten Zahl Ihre Zahl mit
fig1 = plt.figure(1)
,fig2 = plt.figure(2)
etc.Plotten Sie ein Diagramm in eine bestimmte Zahl definieren Achsen
ax1 = fig1.gca()
gca = get current axis und statt mitplt.plot()
verwendenax1.plot()
zu plot in der Abbildung 1Wenn Sie möchten, erstellen Sie 5-zahlen-Listen verwenden :
wenn die Zahl 1 ist bereits geöffnet, und Sie zeichnen möchten eine zusätzliche Kurve Sie müssen nur geben Sie diese Zeilen :
ax1.plot(x1,y2)
und dannfig1.canvas.draw()