通过Matplotlib中的OO接口获取图形管理器

通过Matplotlib中的OO接口获取图形管理器,matplotlib,figure,Matplotlib,Figure,我希望能够获得已创建地物的地物管理器: e、 g.我可以使用pyplot接口,使用: from pylab import* figure() plot(arange(100)) mngr = get_current_fig_manager() 但是,如果我有一些数字: from pylab import * fig0 = figure() fig1 = figure() plot(arange(100)) mngr = fig0.get_manager() #DOES NOT

我希望能够获得已创建地物的地物管理器: e、 g.我可以使用pyplot接口,使用:

from pylab import*
figure()    
plot(arange(100))
mngr = get_current_fig_manager()
但是,如果我有一些数字:

from pylab import *
fig0 = figure()
fig1 = figure()    
plot(arange(100))
mngr = fig0.get_manager() #DOES NOT WORK - no such method as Figure.get_manager()
然而,仔细搜索FigureAPI并没有什么用处。在我的IDE中,没有一个是在图形实例上自动完成的,似乎没有一个方法/成员给我一个“管理器”

那么我该怎么做呢?一般来说,如果有一个pyplot方法,我需要在OO接口中找到它的类似物,我应该去哪里寻找呢

PS:get\u current\u fig\u manager()返回什么类型的对象? 在调试器中,我得到:

type(get_current_fig_manager())
<type 'instance'>
type(获取当前图管理器())

听起来很神秘…

问得好。你的权利,文档没有说任何关于能够获得经理或画布的内容。根据代码的经验,您的问题的答案是:

>>> import matplotlib.pyplot as plt
>>> a = plt.figure()
>>> b = plt.figure()

>>> a.canvas.manager
<matplotlib.backends.backend_tkagg.FigureManagerTkAgg instance at 0x1c3e170>
>>> b.canvas.manager
<matplotlib.backends.backend_tkagg.FigureManagerTkAgg instance at 0x1c42ef0>
从那里(因为没有get_canvas方法),我知道画布存储在哪里,并且可以直接访问它


HTH

仍然使用pyplot界面的一个解决方法是,只需将当前图设置为所需图,然后像以前一样继续,设置当前图的使用
def set_canvas(self, canvas):
    """
    Set the canvas the contains the figure

    ACCEPTS: a FigureCanvas instance
    """
    self.canvas = canvas