実際、タイトルは私が聞きたい質問を正確に反映していません。私の目的は次のとおりです。matplotlib を使用していくつかのプロット関数を作成しています。さまざまなプロット目的のための一連の関数があります。線の場合は line_plot() 、バーの場合は bar_plot() など。例:
import matplotlib.pyplot as plt
def line_plot(axes=None,x=None,y=None):
if axes==None:
fig=plt.figure()
axes=fig.add_subplot(111)
else:
pass
axes.plot(x,y)
def bar_plot(axes=None,x=None,y=None):
if axes==None:
fig=plt.figure()
axes=fig.add_subplot(111)
else:
pass
axes.bar(left=x,height=y)
しかし問題は、定義された関数ごとに、コードのこの部分を繰り返さなければならないことです。
if axes==None:
fig=plt.figure()
axes=fig.add_subplot(111)
else:
pass
コードの繰り返し部分を自動的に実行する、プロット関数の定義の前に適用できるデコレータを使用する方法はありますか? したがって、毎回繰り返す必要はありません。
考えられるオプションの 1 つは、次のような関数を定義することです。
def check_axes(axes):
if axes==None:
fig=plt.figure()
axes=fig.add_subplot(111)
return axes
else:
return axes
次に、例は次のようになります。
import matplotlib.pyplot as plt
def line_plot(axes=None,x=None,y=None):
axes=check_axes(axes)
axes.plot(x,y)
def bar_plot(axes=None,x=None,y=None):
axes=check_axes(axes)
axes.bar(left=x,height=y)
しかし、より良い/クリーンな/よりpythonicな方法はありますか? デコレータを使用できると思いますが、わかりませんでした。誰かアイデアを教えてください。
ありがとう!!