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()
這是我的代碼,我不知道我在哪裏犯錯!!!
您可以減少這個代碼,這將證明你的問題_minimum_量?很多人(包括我自己)都不會閱讀那麼多不相關的代碼來幫助你解決問題。用隨機數或直線替換所有數據('np.arange(10)')。 – tacaswell
@tcaswell我試圖減少無用的代碼部分。 – Dalek
我們不需要看到您的軸標籤,我們不需要您的循環來生成數據,我們不需要任何圖例代碼等。如果SO使用右側的滾動條格式化代碼,那麼從頂部的文本中可以看到代碼太多。並且您的代碼沒有正確縮進。 – tacaswell