如何在循环中绘制一组子图,并在外循环中的每个子图时保存



我想在每次迭代之后绘制一个单个子图中的两个内循环的结果而不关闭它,并且将其放置在外循环中,每个迭代在外循环的每个迭代之后,i,i'd保存图。但不幸的是,它只是在每个循环中绘制了最后一组数据。我如何设法绘制它们?

     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()

这是我的代码,我不知道我在哪里误会了!??

如果我试图保存的每个图的设置在外循环中停留,则该图不会每次更新。

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'$-2times 10^{-4}$',r'$-1.5times 10^{-4}$' ,r'$-1times 10^{-4}$',r'$-0.5times 10^{-4}$' , r'$0.0$', r'$0.5times 10^{-4}$',r'$1times 10^{-4}$',r'$1.5times 10^{-4}$',r'$2times 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'$-2times 10^{-4}$',r'$-1times 10^{-4}$' , r'$0.0$', r'$1times 10^{-4}$',r'$2times 10^{-4}$',r'$3times 10^{-4}$',r'$4times 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()

最新更新