49

matplotlibを使用するスクリプトを作成する場合、スクリプトを実行すると一時的にインタラクティブなグラフウィンドウが表示されます。このウィンドウは、プロットを表示する前にすぐに消えます。iPython内で同じコードをインタラクティブに実行すると、グラフウィンドウは開いたままになります。スクリプトを実行したときにグラフが生成されたら、matplotlibでプロットを開いたままにするにはどうすればよいですか?

たとえば、このプロットを保存することはできますが、次のように表示することはできませんshow()

from matplotlib import pyplot as plt
import scipy as sp

x =  sp.arange(10)
y =  sp.arange(10)

plt.plot(x,y)
plt.show()
4

2 に答える 2

45

ドキュメントによると、にblock渡すことができる実験的なパラメータがありますplt.show()。もちろん、matplotlibのバージョンが十分に新しくない場合、これはありません。

この機能がある場合は、に置き換えて目的の動作を実現できるはずplt.show()ですplt.show(block=True)

于 2012-09-10T20:39:59.457 に答える
14

古い質問ですが、実験的な機能ではなく、文書化された機能のみを使用しているため、より標準的な回答(おそらく)です。

スクリプトを終了する前に、非対話型モードに入り、図を表示します。plt.show()これは、またはを使用して実行できますplt.gcf().show()。両方がブロックします:

plt.ioff()
plt.show()

また

plt.ioff()
plt.gcf().show()

どちらの場合も、showFigureが閉じられるまで関数は戻りません。最初のケースはすべての図をブロックすることであり、2番目のケースは1つの図が閉じられるまでのみブロックすることです。

コンテキストマネージャを使用して、matplotlib.rc_context他に何も変更せずに、プログラムの途中でインタラクティブな状態を一時的に変更することもできます。

import matplotlib as mpl
with mpl.rc_context(rc={'interactive': False}):
    plt.show()

また

with mpl.rc_context(rc={'interactive': False}):
    plt.gcf().show()
于 2016-07-26T14:37:57.367 に答える