Matplotlib: 如何设置当前的数字?

希望这是一个简单的问题,但是我现在还没有弄明白。我想使用 matplotlib 来显示2个数字,然后交互式地使用它们。我用以下方式创作这些图形:

import matplotlib
import pylab as pl


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

并且可以使用类似 MATLAB 的 pyplot 界面绘制两个图形

current_figure = pl.gcf()

我可以确定 pyplot 接口的当前活动图形,这取决于我单击的图形。现在我想用 pyplot 接口绘制第一个图形,但是当前的图形可以是它们中的任意一个。那么有没有类似

pl.set_current_figure(figure)

或者任何变通办法?(我知道我可以使用面向对象的接口,但是对于交互性的东西,只使用 plot (x,y)这样的命令要好得多)

103391 次浏览

Give each figure a number:

f1 = pl.figure(1)
f2 = pl.figure(2)
# use f2
pl.figure(1) # make f1 active again

You can simply set figure f1 as the new current figure with:

pl.figure(f1.number)

Another option is to give names (or numbers) to figures, which might help make the code easier to read:

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


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

In fact, figure "numbers" can be strings, which are arguably more explicit that simple numbers.

PS: The pyplot equivalent of pylab.figure() is matplotlib.pyplot.figure().

PPS: figure() now accepts a Figure object, so you should be able to activate figure f1 with figure(f1).