【问题标题】:Python on windows, open plot windows next to each otherWindows 上的 Python,并排打开绘图窗口
【发布时间】:2023-03-26 08:15:02
【问题描述】:

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

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

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

【问题讨论】:

  • 可以说,当我创建 5 个绘图时,默认情况下,绘图窗口创建在屏幕的中心,并且完全堆叠在一起。我希望让它们彼此相邻创建(比如说,从左上角开始)。

标签: python matplotlib plot enthought


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      相关资源
      最近更新 更多