matplotlib窗口布局问题

时间:2011-10-18 04:18:08

标签: python matplotlib

我有两个关于mpl窗口定位的问题(使用WXAgg后端)

1-)如何创建一个最大化的窗口,而不是每次点击窗口以最大化它?

2-)我有两个屏幕。有趣的是,我的mpl窗口往往在我的小屏幕上打开。如何强制mpl / ipython / WX / X-windows在我的第二台和更大的显示器上打开mpl窗口?

感谢。

2 个答案:

答案 0 :(得分:6)

我使用Tk库进行绘图,您可以在~/.matplotlib/matplotlibrc文件中默认设置:

backend      : TkAgg

这允许我使用:

设置窗口位置和尺寸
import matplotlib.pyplot as plot
wm = plot.get_current_fig_manager()
wm.window.wm_geometry("800x900+50+50")

由于有人可能想将他们的matplotlib窗口放在Mac上,我想做出快速贡献。我经常使用和不使用外部屏幕(在工作和家中)并且想要一些自动使用外部屏幕的方法(如果可用)。幸运的是,必须通过AppKit连接Mac操作系统。

以下代码段将返回包含位置,宽度和高度的ScreenInfo对象列表:

from AppKit import NSScreen

class ScreenInfo:
    pass

def getScreensInfo():
    screens = []

    for i, s in enumerate(NSScreen.screens()):
        screen = ScreenInfo()
        frame = s.frame()
        screen.x = frame.origin.x
        screen.y = frame.origin.y
        screen.w = frame.size.width
        screen.h = frame.size.height
        screens.append(screen)
    return screens

答案 1 :(得分:5)

相对于您的第一个问题,您可以在图形管理器上使用Maximize(因为您的图形管理器是FigureManagerWx实例)或其他后端的等效方法:

>>> from matplotlib import pyplot as plt
>>> plt.plot([1,2,6,4])
[<matplotlib.lines.Line2D object at 0x0000000008E5D2E8>]
>>> mng = plt.get_current_fig_manager()
>>> plt.show()                                    # you get normal size
>>> mng.frame.Maximize(True)                      # now mpl window maximizes

对于第二个问题,我不确定(我无法测试)但是如果可以通过在两个监视器中扩展的屏幕中设置图形的位置来解决问题,那么您可以使用SetPosition(再次用于wxAgg后端):

>>> mng.frame.SetPosition(*args, **kwargs)