私はpythonとmac os xでmatplotlibを使用しています。多くの異なるウィンドウで作業していて、プロットを生成するスクリプトを実行する必要がある場合、プロットウィンドウは常にプロットの後ろで開きます画像を表示するためにウィンドウを切り替える必要があり、プロットウィンドウの場所を決定したり、前景ウィンドウとしてポップアップしたりするのはなぜですか。
ありがとう
まったく同じ問題に悩まされました。私は最終的に解決策を見つけました(pytlabモードで、qt4aggバックエンドを使用):
get_current_fig_manager().window.raise_()
または
fig = gcf()
fig.canvas.manager.window.raise_()
よろしく、Markus
私(OSX 10.10.2、Matplotlib 1.4.3)で機能するのは、matplotlibバックエンドをTkAggに変更することです。 pyplotなどをインポートする前に、次のようにします。
import matplotlib
matplotlib.use('TkAgg')
プロットウィンドウがポップアップし、Command-Tabで移動できるようになりました。
私はこのソリューションが非常に頻繁に必要であることに気づき(Spyder IDEを使用する場合など)、それを関数にラップしました。
def show_plot(figure_id=None):
if figure_id is None:
fig = plt.gcf()
else:
# do this even if figure_id == 0
fig = plt.figure(num=figure_id)
plt.show()
plt.pause(1e-9)
fig.canvas.manager.window.activateWindow()
fig.canvas.manager.window.raise_()
私はこのスレッドで良い答えを見つけました: Tkinterウィンドウを前面にジャンプさせる方法?
基本的に、アイデアはウィンドウ属性を使用することです-'-topmost'属性をTrue(1)に設定してウィンドウを前面に表示し、次にFalse(0)に設定して後で他のウィンドウを表示できるようにしますその前。これが私のために働いたコードです:
import matplotlib.pyplot as plt
wm = plt.get_current_fig_manager()
wm.window.attributes('-topmost', 1)
wm.window.attributes('-topmost', 0)
MacOS Sierraおよびpython 3.6、Matplotlib 2.0.0
import matplotlib.pyplot as plt
plt.get_current_fig_manager().show()
上記の行は他に何も必要としない仕事をします。
これは私のために働いた!!
(Mac OS X 10.11、Spyder 2.3.5.2でテスト済み-Python 3.4)
Preferences> IPython console> Graphicsに移動し、バックエンドをQtに設定します(その後、カーネルを再起動する必要があります)。
以下を含むファイルを作成します。
_def raise_window(figname=None):
if figname: plt.figure(figname)
cfm = plt.get_current_fig_manager()
cfm.window.activateWindow()
cfm.window.raise_()
_
起動時にインポートします([設定]> [IPythonコンソール]> [起動]> [ファイルを実行])。コードの下で関数raise_window()
を呼び出します。
例:
_import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-np.pi, np.pi, 256)
C, S = np.cos(X), np.sin(X)
plt.figure()
plt.plot(X, C)
plt.plot(X, S)
raise_window()
_
私にとっては、次の作品のみ(TkAggバックエンドを使用):
plt.gcf().canvas.get_tk_widget().focus_force()
設定できます
backend : MacOSX
永続的な解決策として、matplotlibrc
ファイル内。
Macp mojaveでは、matplotlib 2.1.2で動作します。ただし、他のユーザーからは機能しないことが報告されているため、他の設定の影響を受ける可能性があります
MacOSX 10.11.6上のmatplotlib 1.5.1以降、iPython(5.0.0、Python:3.5.2)シェルを起動して se%matplotlib を使用すると、matplotlibプロットを前面に表示できます:
>>> %matplotlib
Using matplotlib backend: MacOSX
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,3,2,4])
>>> plt.show()
**編集:グローバルネームスペースを汚染するため、アドバイスは %pylabを使用しない のようです**
..シェルおよび%pylab
以下を使用して、matplotlibプロットを前面に表示できます。
>>> %pylab
Using matplotlib backend: MacOSX
Populating the interactive namespace from numpy and matplotlib
>>> plot([1,3,2,4])
>>> show()