Matplotlib:如何设置当前图形?
这应该是个简单的问题,但我现在搞不明白。我想用matplotlib显示两个图形,然后进行互动操作。我是这样创建图形的:
import matplotlib
import pylab as pl
f1 = pl.figure()
f2 = pl.figure()
然后我可以使用类似MATLAB的pyplot接口在这两个图形上绘图和绘制。通过
current_figure = pl.gcf()
我可以根据我点击的图形来确定当前活跃的图形,这样就能在pyplot接口中使用。现在我想在第一个图形上绘制一些东西,但当前的图形可能是任意一个。那么有没有类似于
pl.set_current_figure(figure)
或者其他解决办法呢?(我知道可以使用面向对象的接口,但对于互动操作,直接使用像plot(x, y)这样的命令要简单得多)
2 个回答
19
给每个图形一个编号:
f1 = pl.figure(1)
f2 = pl.figure(2)
# use f2
pl.figure(1) # make f1 active again
116
你可以简单地把图形 f1
设置为当前图形,方法是:
pl.figure(f1.number)
另一种选择是给图形起名字(或者编号),这样可能会让代码更容易阅读:
pl.figure("Share values")
# ... some plots ...
pl.figure("Profits")
# ... some plots ...
pl.figure("Share values") # Selects the first figure again
实际上,图形的“编号”可以是字符串,这样比简单的数字更清晰。
补充说明: pyplot 中与 pylab.figure()
相对应的是 matplotlib.pyplot.figure()
。
再补充: figure()
现在可以接受一个 Figure
对象,所以你应该可以通过 figure(f1)
来激活图形 f1
。