Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib窗口是否显示在后面?_Python_Macos_Plot_Matplotlib - Fatal编程技术网

Python Matplotlib窗口是否显示在后面?

Python Matplotlib窗口是否显示在后面?,python,macos,plot,matplotlib,Python,Macos,Plot,Matplotlib,每当我在matplotlib中调用show(),绘图窗口就会出现在所有其他窗口的后面,我必须最小化所有内容才能看到它。有没有什么方法可以阻止这一点,或者通过编程将其带到前台。关于OSX狮子。Python2.7可能是特定于操作系统的,但使用交互式绘图(在您指示后立即绘图)会使图形在Ubuntu上绘制后立即出现在前景中: import pylab as P P.ion() P.figure(1) P.plot([1,2,3],[1,4,9]) 这不完全是对您问题的回答,但我使用的不是默认的pyth

每当我在matplotlib中调用
show()
,绘图窗口就会出现在所有其他窗口的后面,我必须最小化所有内容才能看到它。有没有什么方法可以阻止这一点,或者通过编程将其带到前台。关于OSX狮子。Python2.7可能是特定于操作系统的,但使用交互式绘图(在您指示后立即绘图)会使图形在Ubuntu上绘制后立即出现在前景中:

import pylab as P
P.ion()
P.figure(1)
P.plot([1,2,3],[1,4,9])

这不完全是对您问题的回答,但我使用的不是默认的python控制台。使用
ipython--pylab启动时,我可以通过键入等方式进行绘图

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

让情节出现在前面。它还有其他一些非常好的特性;)

Matplotlib开发者似乎意识到了这个问题。但是研究它似乎需要一段时间才能找到解决方案,显然是因为有些人觉得这个数字很烦人。show()会“窃取”屏幕空间。

我的设置与NickOnline相同。对我有效的是:

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_()

嗯。这个答案出现在对被接受答案的评论中,但我认为它应该作为一个独立的答案,因为它很好地解决了这个问题。除了作者的问题之外,我还有一个问题,matplotlib窗口不在活动窗口的托盘中,因此我无法通过
+
切换到它

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

import matplotlib
matplotlib.use("Qt5agg")
Qt5agg
可能未显示在您的系统中,请选择一个。你可以找到它们:

import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)
如果有帮助,那么您可能希望在配置中更改后端。为此,请首先找到它:

import matplotlib
matplotlib.matplotlib_fname()
然后更改
后端:
值:

backend      : macosx
到您的后端。我最后用了:

backend      : TkAgg

导入行后面有一个“()”,FigureManager中似乎没有更多的窗口属性。我在我的10.9.1系统上遇到了python和ipython的相同行为,因此它不一定是所有情况下的解决方案。这里也一样。我相信anddam遇到了与我相同的问题,即matplotlib窗口永久位于所有其他窗口之后。我无法将其聚焦,即使在任务控制中单击它。到目前为止,我找到的唯一解决办法是使用任务控制将窗口临时放置到一个空白空间,然后切换到该空间,将窗口聚焦,然后将窗口拖回我的原始空间,在那里z顺序最终将是正确的(除非我单击任何其他窗口,这会导致它立即返回到后面)。更新:TkAgg后端没有相同的问题;它有一个顶级窗口(即,您可以使用Cmd选项卡切换到它)。它仍然从z顺序的底部开始,但现在行为正常。我认为Mavericks中的MacOSX后端一定有缺陷。@NeilTraft的解决方案对我很有效。要使TkAgg成为默认后端,请找到您的,并将行
backend:MacOSX
更改为
backend:TkAgg