質問

この質問に対するフォローアップの質問があります

図のさまざまな部分で動作する複数のpythonスクリプトを使用して、図の生成を効率化することは可能ですか?

たとえば、次の機能がある場合:

  

FunctionA:何かのヒストグラムを描く
  FunctionB:テキストを含むボックスを描画する
  FunctionC:何かCのプロットを描く
  FunctionD:何かDのプロットを描く

上記の関数を異なるスクリプトで再利用するにはどうすればよいですか?たとえば、何かCのプロットを含むヒストグラムを含む図を作成する場合、何らかの方法でスクリプトからFunctionAとFunctionCを呼び出します。または、2つのプロットを持つ図が必要な場合は、FunctionCとFunctionDを呼び出します。

自分自身を明確に説明しているかどうかはわかりませんが、この質問をする別の方法は次のとおりです:フィギュアオブジェクトを関数に渡し、関数に渡されたフィギュアオブジェクトに何かを描画させてからそれをメインスクリプトに戻し、タイトルなどのその他のものを追加しますか?

役に立ちましたか?

解決

ここでは、アーティストオブジェクトを使用し、必要に応じて渡します。関数:

import numpy as np
import matplotlib.pyplot as plt

def myhist(ax, color):
    ax.hist(np.log(np.arange(1, 10, .1)), facecolor=color)

def say_something(ax, words):
    t = ax.text(.2, 20., words)
    make_a_dim_yellow_bbox(t)

def make_a_dim_yellow_bbox(txt):
    txt.set_bbox(dict(facecolor='yellow', alpha=.2))

fig = plt.figure()
ax0 = fig.add_subplot(1,2,1)
ax1 = fig.add_subplot(1,2,2)

myhist(ax0, 'blue')
myhist(ax1, 'green')

say_something(ax0, 'this is the blue plot')
say_something(ax1, 'this is the green plot')

plt.show()

 alt text

他のヒント

オーケー、これを行う方法を見つけました。想像していたよりもずっと簡単でした。 および axes クラス。

メインスクリプト内:

import pylab as plt  
import DrawFns  
fig = plt.figure()  
(do something with fig)  
DrawFns.WriteText(fig, 'Testing')  
plt.show()

DrawFns.pyで:

def WriteText(_fig, _text):  
[indent]_fig.text(0, 0, _text)

これで終わりです!また、DrawFns.pyに関数を追加して、 import 呼び出しに含まれている限り、任意のスクリプトから呼び出すことができます。 :D

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top