我希望能够获得已创建数字的figure_manager: 例如我可以使用:
使用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()
然而,仔细搜索图API http://matplotlib.org/api/figure_api.html,没有用。在我的IDE中,在一个数字实例上都没有自动完成,没有一个方法/成员似乎给我一个“经理”。
那么我该怎么做呢?一般来说,如果在OO界面中有一个我需要模拟的pyplot方法,我应该在哪里查看?
PS:get_current_fig_manager()返回了什么样的对象? 在调试器中我得到:
type(get_current_fig_manager())
<type 'instance'>
听起来很神秘......
答案 0 :(得分:4)
好问题。你的权利,文档没有说任何关于能够获得经理或画布的事情。根据代码的经验,您的问题的答案是:
>>> 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>
了解这些内容的最佳位置是阅读代码。在这种情况下,我知道我想获得画布,以便我可以抓住图形管理器,所以我查看了figure.py
中的set_canvas方法,并找到了以下代码:
def set_canvas(self, canvas):
"""
Set the canvas the contains the figure
ACCEPTS: a FigureCanvas instance
"""
self.canvas = canvas
从那里开始,(因为没有get_canvas方法),我知道画布的存储位置,可以直接访问它。
HTH