2014-01-23 115 views
0

我想在每次迭代之後在一個單獨的子圖中繪製兩個內部循環的結果,但不關閉它,這將放置在外部循環中,並且在每次迭代外部循環後,我會保存這些圖。但不幸的是,它只繪製了每個循環中的最後一組數據。我怎麼能設法將它們全部繪製出來?如何繪製循環中的一組子繪圖並將每個子繪圖保存在外循環中?

 shape=['.','s','^'] 
    colors=['r','b','m','c']  
    for l in range(len(rg)): 
     for ii in range(len(ANISO_POLY)): 
      for iii in range(len(ST_INT)): 
       rc('text', usetex=True) 
       rc('font', family='serif') 
       fig = plt.figure(figsize=(5,7.5)) 
       ax = fig.add_subplot(2,1,1) 
       ax.set_xscale('log') 
       #m, mean_D1, stdev_D1, mean_D2 and stdev_D2 are generated in the inner loop each time 
       ax.errorbar(m, mean_D1, yerr=stdev_D1, color=colors[ii], ecolor=colors[ii], fmt=shape[iii], capsize=0, elinewidth=1.0,linestyle='dashed' ,label=ANISO_POLY[ii]+','+ST_INT[iii]) 
       ax.set_xlabel(r'$\Theta$', fontsize=15) 
       ax.set_ylabel(r'$D_1^{+}$', fontsize=15) 
       fontsize=10 
       for tick in ax.xaxis.get_major_ticks(): 
        tick.label1.set_fontsize(fontsize) 
       for tick in ax.yaxis.get_major_ticks(): 
        tick.label1.set_fontsize(fontsize)    
       ax = fig.add_subplot(2,1,2) 
       ax.set_xscale('log') 
       ax.errorbar(m, mean_D2, yerr=stdev_D2, color=colors[ii], ecolor=colors[ii], fmt=shape[iii], capsize=0, elinewidth=1.0,linestyle='dashed',label=ANISO_POLY[ii]+','+ST_INT[iii]) 
       ax.set_xlabel(r'$\Theta$', fontsize=15) 
       ax.set_ylabel(r'$D_2^{+}$', fontsize=15) 
       fontsize=10 
       for tick in ax.xaxis.get_major_ticks(): 
        tick.label1.set_fontsize(fontsize) 
       for tick in ax.yaxis.get_major_ticks(): 
        tick.label1.set_fontsize(fontsize) 
     lg=ax.legend(numpoints=1,loc="upper right", ncol=1,fontsize=8) 
     lg.draw_frame(False) 
     plotfile='A226_R.ellip'+rg[l]+'.pdf' 
     plt.savefig(plotfile, dpi=50, bbox_inches='tight') 
     plt.close() 

這是我的代碼,我不知道我在哪裏犯錯!!!

+0

您可以減少這個代碼,這將證明你的問題_minimum_量?很多人(包括我自己)都不會閱讀那麼多不相關的代碼來幫助你解決問題。用隨機數或直線替換所有數據('np.arange(10)')。 – tacaswell

+0

@tcaswell我試圖減少無用的代碼部分。 – Dalek

+1

我們不需要看到您的軸標籤,我們不需要您的循環來生成數據,我們不需要任何圖例代碼等。如果SO使用右側的滾動條格式化代碼,那麼從頂部的文本中可以看到代碼太多。並且您的代碼沒有正確縮進。 – tacaswell

回答

0

如果我試圖保存的每個圖形的設置都保留在外部循環中,則圖形不會每次更新。

colors = cm.rainbow(np.linspace(0, 1, 12)) 
for l in range(len(rg)): 
    color_count=0 
    rc('text', usetex=True) 
    rc('font', family='serif') 
    fig = plt.figure(figsize=(5,7.5)) 
    ax1 = fig.add_subplot(2,1,1) 
    ax1.set_xscale('log') 
    x0,x1 = ax1.get_xlim() 
    y0,y1 =ax1.set_ylim(-2e-4,2e-4) 
    ax1.set_yticks((-2e-4,-1.5e-4,-1e-4,-0.5e-4,0.0,0.5e-4,1e-4,1.5e-4,2e-4)) 
    ax1.set_yticklabels([r'$-2\times 10^{-4}$',r'$-1.5\times 10^{-4}$' ,r'$-1\times 10^{-4}$',r'$-0.5\times 10^{-4}$' , r'$0.0$', r'$0.5\times 10^{-4}$',r'$1\times 10^{-4}$',r'$1.5\times 10^{-4}$',r'$2\times 10^{-4}$']) 
    ax1.set_xlabel(r'$\Theta$', fontsize=15) 
    ax1.set_ylabel(r'$D_1^{+}$', fontsize=15) 
    fontsize=10 
    for tick in ax1.xaxis.get_major_ticks(): 
     tick.label1.set_fontsize(fontsize) 
    for tick in ax1.yaxis.get_major_ticks(): 
     tick.label1.set_fontsize(fontsize)    
    ax1.set_aspect((x1-x0)/(y1-y0)) 
    ax2 = fig.add_subplot(2,1,2, aspect=1) 
    ax2.set_xscale('log') 
    ax2.set_ylim(-2e-4,4e-4) 
    ax2.set_yticks((-2e-4,-1e-4,0.0,1e-4,2e-4,3e-4,4e-4)) 
    ax2.set_yticklabels([r'$-2\times 10^{-4}$',r'$-1\times 10^{-4}$' , r'$0.0$', r'$1\times 10^{-4}$',r'$2\times 10^{-4}$',r'$3\times 10^{-4}$',r'$4\times 10^{-4}$']) 
    ax2.set_xlabel(r'$\Theta$', fontsize=15) 
    ax2.set_ylabel(r'$D_2^{+}$', fontsize=15) 
    fontsize=10 
    for tick in ax2.xaxis.get_major_ticks(): 
     tick.label1.set_fontsize(fontsize) 
    for tick in ax2.yaxis.get_major_ticks(): 
     tick.label1.set_fontsize(fontsize) 
    for ii in range(len(ANISO_POLY)): 
     for iii in range(len(ST_INT)): 
      ax1.errorbar(m, mean_D1, yerr=stdev_D1, color=colors[color_count], ecolor=colors[color_count], fmt='.', capsize=0, elinewidth=1.0,linestyle='dashed' ,label='Poly. or.:'+ANISO_POLY[ii]+',St. int.:'+ST_INT[iii]) 
      ax2.errorbar(m, mean_D2, yerr=stdev_D2, color=colors[color_count], ecolor=colors[color_count], fmt='.', capsize=0, elinewidth=1.0,linestyle='dashed',label='Poly. or.:'+ANISO_POLY[ii]+', St. int.:'+ST_INT[iii]) 
      color_count+=1 
    lg=ax2.legend(numpoints=1,loc=4, ncol=3,fontsize=5) 
    lg.draw_frame(False) 
    plotfile='A226_R.ellip'+rg[l]+'.pdf' 
    plt.savefig(plotfile, dpi=50, bbox_inches='tight') 
    plt.close()