我在windows7上使用EPD-python2.7。在我的python程序中,我最终在单独的绘图窗口中创建了4-5个数字。默认情况下,绘图窗口堆叠在一起。每次我必须拖动并更换每个窗口并分布在屏幕区域。
(Q1)有没有办法自动设置它以创建彼此相邻的绘图窗口?如下图所示(它是我的第二个外部屏幕的屏幕截图)。
(Q2)我有第二个(额外)屏幕,理想情况下,我希望每次运行程序
时,第二个屏幕都会创建彼此相邻的绘图窗口答案 0 :(得分:3)
您可以选择地块的位置,但这取决于后端。要检查一下,
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)
然后看combining them答案,了解各种调整方法。
例如,这适用于我在linux上使用fm.window.wm_geometry("+500+0")
,
from win32api import GetSystemMetrics
width = GetSystemMetrics(0)
weight = GetSystemMetrics(1)
对于Windows来说这可能更好
#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
您也可以获得屏幕尺寸this,
{{1}}
您可以轻松创建一个计数器,该计数器会在您创建绘图时递增并调整此指定位置,以便下一个绘图每次都与上一个绘图相邻。但是,如果使用子图,大小和布局会更容易,例如设置2乘3网格,
{{1}}
然后,您可以使用计数器指定当前使用的绘图,并在绘制时增加此值。
答案 1 :(得分:1)
我有同样的问题。当我查看答案时,对我来说不明显的是,当你有第二台显示器时,你可以通过使用相对于你的第一台显示器的坐标来实现它。例如,我的1080p主显示器上方有一个4k显示器,我通过使用y位置的负值将数字放在上面。
mgr = plt.get_current_fig_manager()
mgr.window.move(-400,-2000)
plt.show()
显然它知道我的Windows显示器安排。