plt.ioff()
またはplt.show()
(%matplotlib inline
を使用している場合)は必要ありません。上記のコードはplt.ioff()
なしでテストできます。 plt.close()
には必須の役割があります。この方法を試してください。
%matplotlib inline
import pylab as plt
# It doesn't matter you add line below. You can even replace it by 'plt.ion()', but you will see no changes.
## plt.ioff()
# Create a new figure, plot into it, then close it so it never gets displayed
fig = plt.figure()
plt.plot([1,2,3])
plt.savefig('test0.png')
plt.close(fig)
# Create a new figure, plot into it, then don't close it so it does get displayed
fig2 = plt.figure()
plt.plot([1,3,2])
plt.savefig('test1.png')
あなたはiPythonにこのコードを実行した場合、それは2番目のプロットが表示されます、そしてあなたはそれの終わりにplt.close(fig2)
を追加した場合、あなたは何も表示されません。
結論として、plt.close(fig)
で図を閉じると、それは表示されません。
- しかし、私は一般的にiPython内でインラインプロットを保持したいと思います。あなたが提案するものは、バックエンドで完全なスイッチを作ればうまく動作します。問題は、インラインプロットの一般的な状況を、インラインで表示せずに図を保存する例外的なケースでどのように許可するかです。あなたの提案で、私はモジュールをリロードし、バックエンドを一時的に変更しようとしましたが、成功しませんでした。 iPythonノートブックセッション内でバックエンドを一時的に変更する方法に関するアイデアはありますか? – tnt
私はインタラクティブプロットと 'close()'と 'show()'コマンドについての質問を更新しました。これはあなたの問題を解決するはずです。あなたが発見したように、オンザフライでバックエンドを変更することはサポートされていません。 – staticfloat
素晴らしいフィードバックをいただきありがとうございます。 plt.close(fig)が私の必要性の鍵となるようです。私はそれが操作に影響を与えないように見えるので、ioffでまだ明確ではない。しかし、私はおそらく何かが不足しています。再度、感謝します。 – tnt