1

データから多数のプロットを生成するスクリプトを作成しています。各プロットは最初に で保存されplt.savefig()、次に で表示されplt.show()ます。最初のフェーズでは、すべてのプロットを表示し、プロットごとにスクリプトを停止して、軸の範囲、スケール、ラベルなどを微調整できるようにします。

第 2 段階では、これらのプロットを LaTex に含めてレイアウトを完成させるときに、最終編集のためにスクリプトを再実行するときにすべてのプロットをポップアップせずに PDF に保存する必要があります。

plt.show()この第 2 フェーズでスクリプトをバックグラウンドで実行できるように、スクリプトの前に置いて無効にする簡単なコマンドはありますか?

plt.ion()ノンブロッキングを作成するために使用できることはわかってplt.show()いますが、ラテックスエディターウィンドウからフォーカスを奪うウィンドウがポップアップし続けます(私はUbuntuを使用しています)。

4

1 に答える 1

0

あなたはまったく正しい質問をしていませんが、答えを理解するには、 のアーキテクチャについて少し理解する必要がありますmatplotlibpyplot同様のエクスペリエンスを模倣するためにipythonで動作するように構築されたステートマシンベースのレイヤーがありMATLABます。これは、インターフェースの上に構築されていOOます(これは、 の代わりにスクリプトに使用する必要がありますがpyplot、余談です)。レイヤーは、に描画する方法とデータを変換する方法OOを知っています->抽象的なきれいな線。canvascanvas、抽象的なきれいな線を実際のきれいな線に変換する方法を知っている、さまざまなバックエンドの 1 つによって提供されます。デフォルトでは、おそらくGTKAggバックエンドまたはバックエンドを使用していTKAggます。これらは、GUI に埋め込まれたキャンバスに線を描画し、どちらもインタラクティブなバックエンドです。

2 回目以降は、非インタラクティブなバックエンドを使用するだけです。

スクリプトに次を含めます。

import matplotlib
matplotlib.use('PDF')

をインポートする前にpyplot、インタラクティブな図が必要な場合はその行をコメントアウトします。

于 2013-05-26T17:19:38.837 に答える