1. ホーム
  2. python

[解決済み] Matplotlibの対話型図形の保存

2022-05-29 10:31:06

質問

Matplotlibの図を保存して、再び開いたときに典型的な相互作用を復元できるような方法はあるでしょうか?(MATLABの.fig形式のような?)

私は、これらのインタラクティブな図を生成するために、同じスクリプトを何度も実行していることに気づきました。または、プロットのさまざまな側面を表示するために、複数の静的な PNG ファイルを同僚に送っています。私はむしろ図オブジェクトを送り、彼ら自身にそれを操作させたいと思っています。

どのように解決するのですか?

これは素晴らしい機能ですが、AFAIKではMatplotlibに実装されていませんし、数値の保存方法の関係で自分で実装するのは難しいでしょう。

私は、(a) データの処理と図の生成を分離し(データをユニークな名前で保存する)、図生成スクリプトを書き(保存したデータの指定ファイルを読み込む)、適当に編集する、または (b) PDF/として保存する、のどちらかを提案します。 SVG / ポストスクリプト のような空想的な図形エディタで編集してください。 アドビイラストレータ (または インクスケープ ).

EDITポスト2012年秋 : 下記で他の方が指摘されているように(これが認められた答えなのでここで言及しますが)、バージョン1.2以降のMatplotlibでは数値のピクルスが可能でした。 そのため リリースノートには とあるように、これは実験的な機能であり、ある Matplotlib のバージョンで図を保存し、別のバージョンで開くことはサポートされていません。 また、信頼できないソースから pickle を復元することは、一般的に安全ではありません。

(最初に重要なデータ処理を必要とし、数ヶ月後、例えば科学出版のための査読中に微調整する必要があるかもしれない)プロットを共有/後で編集するために、私はまだ(1)プロットを生成する前に、処理したデータ(プロットに入るもの)をファイルに保存するデータ処理スクリプトを持ち、(2) プロットを再作成する別のプロット生成スクリプト(必要に応じてあなたが修正)を持っているというワークフローを推奨します。 この方法では、プロットごとにスクリプトを実行して素早く再作成することができます(そして、新しいデータでプロットの設定を素早くコピーすることができます)。 とはいえ、図のピックリングは、短期的/インタラクティブ/探索的なデータ分析に便利かもしれません。