16

每当我调用show()matplotlib 时,绘图窗口都会出现在所有其他窗口的后面,我必须最小化所有内容才能看到它。有什么办法可以防止这种情况或以编程方式将其带到前面。在 OSX 狮子上。蟒蛇 2.7

4

5 回答 5

1

Matplotlib 开发人员似乎意识到了这个问题。但是查看https://github.com/matplotlib/matplotlib/issues/596看起来需要一段时间才能找到解决方案,显然是因为有些人觉得 figure.show() “窃取”屏幕空间很烦人.

于 2012-10-04T22:10:01.190 回答
1

不完全是您问题的答案,但我使用的是ipython而不是默认的 python 控制台。当启动它时,ipython --pylab我可以通过键入来绘制

>> plot([1,3,2])

并让情节在前面弹出。它还有一些其他非常好的功能;)

于 2012-05-16T02:54:48.927 回答
1

出色地。这个答案出现在对已接受答案的评论中,但我认为它应该有一个单独的位置,因为它很好地解决了这个问题。除了作者的问题,我还有一个问题是 matplotlib 窗口不在活动窗口的托盘中,所以我无法通过<Alt>+<Tab>.

更改 matplotlib 的默认后端macosx解决了所有问题。您可以立即在您的代码中尝试,如下所示:

import matplotlib
matplotlib.use("Qt5agg")

Qt5agg可能不会出现在您的系统中,那么请选择一个。你可以找到它们:

import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)

如果它有帮助,那么您可能想要更改配置中的后端。为此首先找到它:

import matplotlib
matplotlib.matplotlib_fname()

然后更改backend:值:

backend      : macosx

到您的后端。我最后使用了:

backend      : TkAgg
于 2018-08-03T16:56:07.477 回答
0

我的设置与 nickponline 相同。对我有用的是:

from pylab import get_current_fig_manager()
get_current_fig_manager().window.raise_()

如果您有多个数字,这只会提高当前活动的数字。对于这种情况,我发现以下工作:

fig1=figure(1)
cfm1=get_current_fig_manager().window

fig2=figure(2)
cfm2=get_current_fig_manager().window
...
cfm1.activateWindow()
cfm1._raise()
pause(.1)  # or something else that uses up some time
cfm2.activateWindow()
cfm2.raise_()
于 2013-07-27T01:14:02.743 回答
0

它可能是特定于操作系统的,但使用交互式绘图(一旦你指示就会绘图)会导致数字在 Ubuntu 上生成后立即出现在前台

import pylab as P
P.ion()
P.figure(1)
P.plot([1,2,3],[1,4,9])
于 2012-05-16T01:38:58.057 回答