2016-11-01 13 views
0

私は学校プロジェクトに取り組んでいます。私はすべてのプロットをプロットするためにmatplotlibを使用していますが、最初のプロットをコピーして、変数名を変更して他のプロット(サブプロット) 。Matplotlibワークフロー

あなたは、私がこのリンクでそれを行っているかを確認することができます

IPython Project Notebook

は、私は非常に感謝し、私のワークフローを改善する方法についてのフィードバックをいただければ幸いです。

答えて

3

作図の仕組みを独自の関数に分離することを考慮して、各変数に対してその関数を呼び出すループをforにすることができます。ここでは例を示します(パラメータリストのうち2つだけを複製しましたが、残りの部分をどのように追加するかはわかります)。

fig, ax = plt.subplots(nrows=3, ncols= 2, figsize=(10,10)) 
x = np.linspace(0,1000000,num=10000) 

def plot_maker(ax, x, var, var_name, ax_x, ax_y): 
    sh, l, sc = sts.weibull_min.fit(var, floc=0) 
    y = sts.weibull_min.pdf(x, sh, l, sc) 
    print('Weibull parameters for {0}:\n Scale: {1:2.2f}\n Shape: {2:02.2f}'.format(var_name, sc, sh)) 
    ax[ax_x, ax_y].hist(var, normed=True) 
    ax[ax_x, ax_y].plot(x, y, 'r', lw=2) 

params = [ 
    [fuel['TTF or TBF'], 'Fuel TBF', 0, 0], 
    [engine['TBF(TTF)'], 'Engine TBF', 0, 1], 
] 

for param_list in params: 
    var, var_name, ax_x, ax_y = param_list 
    plot_maker(ax, x, var, var_name, ax_x, ax_y) 

あり、これを書くための方法はたくさんありますが、重要なことは、あなたが望むようあなたが任意のパラメータを追加することができますので、あなたが、個々のパラメータからモデリングとプロット作りを分けることです。

1

プロット関数&を呼び出すことができます。プロットする軸(.reshpae(-1)を使用して軸を平坦にすることができます)と、必要な変数のリストプロットする。色や字幕のような他のパラメータのリストを送ることもできます。

def Plotter(axes,Yvars,Colors,x): 
for ax, yvar, c in zip(axes,Yvars,Colors): 
    ax.plot(x,yvar,color = c) 

fig, axes = plt.subplots(nrows=3, ncols= 2, figsize=(10,10)) 

Yvars = [y1,y2,y3,y4,y5] 
Colors = ['b','b','g','g','r'] 
ax_to_plot = axes.reshape(-1)[0:5] 
Plotter(ax_to_plot,Yvars,Colors,x) 
plt.tight_layout() 
+0

これらの回答のいずれかがあなたの質問に答えているので、これらの回答の1つにマークを付けることを検討してください。 –