每当我调用show()
matplotlib 时,绘图窗口都会出现在所有其他窗口的后面,我必须最小化所有内容才能看到它。有什么办法可以防止这种情况或以编程方式将其带到前面。在 OSX 狮子上。蟒蛇 2.7
5 回答
Matplotlib 开发人员似乎意识到了这个问题。但是查看https://github.com/matplotlib/matplotlib/issues/596看起来需要一段时间才能找到解决方案,显然是因为有些人觉得 figure.show() “窃取”屏幕空间很烦人.
不完全是您问题的答案,但我使用的是ipython而不是默认的 python 控制台。当启动它时,ipython --pylab
我可以通过键入来绘制
>> plot([1,3,2])
并让情节在前面弹出。它还有一些其他非常好的功能;)
出色地。这个答案出现在对已接受答案的评论中,但我认为它应该有一个单独的位置,因为它很好地解决了这个问题。除了作者的问题,我还有一个问题是 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
我的设置与 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_()
它可能是特定于操作系统的,但使用交互式绘图(一旦你指示就会绘图)会导致数字在 Ubuntu 上生成后立即出现在前台:
import pylab as P
P.ion()
P.figure(1)
P.plot([1,2,3],[1,4,9])