Matplotlib:如何设置当前图形?

100 投票
2 回答
116025 浏览
提问于 2025-04-17 05:31

这应该是个简单的问题,但我现在搞不明白。我想用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

撰写回答