5

天文データを処理するためのスクリプトと関数をたくさん書いています。3 パネル プロットでいくつかの異なるプロパティをプロットしたい銀河のセットがあります。ここにレイアウトの例があります:

ここに画像の説明を入力

さて、これは問題ではありません。しかし、ときどき、単一の銀河だけのためにこのプロットを作成したいと思うことがあります。他のケースでは、次のモックアップのように、それぞれが 3 つ以上のペイン構造で構成されるサブプロットで構成される、より大きなプロットを作成したいと考えています。

ここに画像の説明を入力

matplotlib.figure.Figureコードのモジュール性と再利用性のために、関数にオブジェクトを返させてから、呼び出し元 (関数または対話型セッション) にオブジェクトまたはオブジェクトを埋め込むかどうかを決定さshow()せるsavefigという効果で何かをしたいと思います。より大きな図。しかし、ドキュメントや他の場所でこれに関するヒントを見つけることができないようです。人々が頻繁に行うことではないようです。

どのような道をたどるのが最善かについて何か提案はありますか? axes_gridusingが解決策になるかどうかを推測しましたが、それはあまりきれいではなく、呼び出し元に依存していないようです。助言がありますか?

4

1 に答える 1

3

最善の解決策は、Figure レイアウト ロジックをプロット ロジックから分離することです。プロット コードを次のように記述します。

 def three_panel_plot(data, ploting_args, ax1, ax2, ax3):
     # what you do to plot

したがって、データ -> 画像を変換するコードは、データとそのデータをプロットする場所を引数として取ります。

1 つだけを実行したい場合は簡単です。3x3 グリッドを実行したい場合は、レイアウトを生成してから、軸セット + データをループするだけです。

あなたが提案している方法(プロットルーチンからオブジェクトを返す)は、matplotlibでは非常に難しく、内部が接続されすぎています。

于 2013-09-24T12:51:43.307 に答える