Python windows,开放地块 windows 彼此相邻

Python on windows, open plot windows next to each other

我在 windows7 上使用 EPD-python2.7。在我的 python 程序中,我最终在单独的绘图 windows 中创建了 4-5 个图形。默认情况下,绘图 windows 会堆叠在一起。每次我必须将这些 windows 中的每一个都拖走并替换并分布在屏幕区域上时。

(Q1) 有什么方法可以自动设置为相邻创建绘图 windows 吗?如下图所示(这是我的第二个外屏的截图)。

(Q2) 我有第二个(额外的)屏幕,理想情况下,我希望在第二个屏幕上彼此相邻地创建绘图 windows,而每次我 运行 我的程序

您可以选择绘图的位置,但这取决于后端。要检查这一点,

import matplotlib
matplotlib.get_backend()

然后查看 this 答案以了解各种调整方式。 例如,这对我来说适用于 linux 和 Qt4Agg

import matplotlib.pyplot as plt

#Choose the correct dimensions for your first screen
FMwidth = 1280
FMheight = 1024

#Choose the correct dimensions for your second screen
SMwidth = 1280
SMheight = 1024

fm = plt.get_current_fig_manager()
#Works with QT on linux 
fm.window.setGeometry(FMwidth,0,SMwidth,SMheight)

这可能更适合 windows

fm.window.wm_geometry("+500+0")

您还可以获取屏幕尺寸 from

from win32api import GetSystemMetrics

width = GetSystemMetrics(0)
weight = GetSystemMetrics(1)

您可以轻松地创建一个计数器,它会在您创建绘图时递增并调整此指定位置,以便下一个绘图每次都紧挨着前一个绘图。但是,如果您使用子图,例如设置 2 x 3 网格,大小和布局会容易得多,

#Setup 2 by 3 grid of subplots
fig, axs = plt.subplots(2,3,figsize=(width,height))

axs[0,0].plot(x, np.sinc(x))
axs[1,0].hist(y)
etc

然后您可以使用您的计数器来指定您当前正在使用的绘图,并在您绘图时递增它。

我也有同样的问题。当我查看答案时,对我来说并不明显的是,当你有第二台显示器时,你可以通过使用相对于你的第一台显示器的坐标来获得它。例如,我在 1080p 主显示器上方有一个 4k 显示器,我通过在 y 位置使用负值来将数字放在上面。

mgr = plt.get_current_fig_manager()
mgr.window.move(-400,-2000)
plt.show()

显然它从 Windows 知道我的显示器安排。