Matplotlib: Wie stelle ich die aktuelle Zahl ein?

83

Dies ist hoffentlich eine einfache Frage, aber ich kann sie im Moment nicht herausfinden. Ich möchte matplotlib verwenden, um 2 Figuren zu zeigen und sie dann interaktiv zu verwenden. Ich erstelle die Figuren mit:

import matplotlib
import pylab as pl

f1 = pl.figure()
f2 = pl.figure()

und kann die MATLAB-ähnliche Pyplot-Oberfläche verwenden, um beide Figuren zu zeichnen und zu zeichnen. Mit

current_figure = pl.gcf()

Ich kann die aktuell aktive Figur für die Pyplot-Oberfläche bestimmen, abhängig davon, auf welche Figur ich geklickt habe. Jetzt möchte ich mit der Pyplot-Schnittstelle etwas zur ersten Figur zeichnen, aber die aktuelle Figur kann eine davon sein. Also gibt es so etwas

pl.set_current_figure(figure)

oder eine Problemumgehung? (Ich weiß, dass ich die objektorientierte Oberfläche verwenden kann, aber für interaktive Dinge ist es viel schöner, nur Befehle wie plot (x, y) zu verwenden.)

Alexander
quelle

Antworten:

93

Sie können die Zahl einfach f1als neue aktuelle Zahl festlegen mit:

pl.figure(f1.number)

Eine andere Möglichkeit besteht darin, Abbildungen Namen (oder Nummern) zu geben, um den Code leichter lesbar zu machen:

pl.figure("Share values")
# ... some plots ...
pl.figure("Profits")
# ... some plots ...

pl.figure("Share values")  # Selects the first figure again

Tatsächlich können Zahlen "Zahlen" Zeichenfolgen sein, die wohl expliziter sind als einfache Zahlen.

PS : Das Pyplot-Äquivalent von pylab.figure()ist matplotlib.pyplot.figure().

Eric O Lebigot
quelle
1
Gibt es eine gute Möglichkeit, dies mit matplotlib.figure.Figure anstelle von pylab zu tun?
Tylerthemiler
@tylerthemiler: Ja, aber das wäre matplotlib.pyplot.figure().
Eric O Lebigot
Wenn Sie dasselbe mit Achsen machen möchten, verwenden Sie einfach pylab.sca(my_axis)("Aktuelle Achse einstellen").
PiHalbe
14

Geben Sie jeder Figur eine Nummer:

f1 = pl.figure(1)
f2 = pl.figure(2)
# use f2
pl.figure(1) # make f1 active again
Hoa Long Tam
quelle