plt.*
設置通常適用於matplotlib的當前 plot;與plt.subplot
,你開始一個新的情節,因此設置不再適用於它。您可以通過與地塊相關聯的Axes
對象(see examples here)共享標籤,刻度等,但是恕我直言,這將在這裏矯枉過正。相反,我建議把常見的「造型」成一個函數並調用每情節:
def applyPlotStyle():
plt.xlabel('Size')
plt.ylabel('Time(s)');
plt.title('Matrix multiplication')
plt.xticks(range(100), rotation=30, size='small')
plt.grid(True)
plt.subplot(211)
applyPlotStyle()
plt.plot(xl, serial_full, 'r--')
plt.plot(xl, acc, 'bs')
plt.plot(xl, cublas, 'g^')
plt.subplot(212)
applyPlotStyle()
plt.yscale('log')
plt.plot(xl, serial_full, 'r--')
plt.plot(xl, acc, 'bs')
plt.plot(xl, cublas, 'g^')
在一個側面說明,你可以通過提取你的情節深挖更多的複製命令到這樣的功能:
def applyPlotStyle():
plt.xlabel('Size')
plt.ylabel('Time(s)');
plt.title('Matrix multiplication')
plt.xticks(range(100), rotation=30, size='small')
plt.grid(True)
def plotSeries():
applyPlotStyle()
plt.plot(xl, serial_full, 'r--')
plt.plot(xl, acc, 'bs')
plt.plot(xl, cublas, 'g^')
plt.subplot(211)
plotSeries()
plt.subplot(212)
plt.yscale('log')
plotSeries()
另一方面說明,將標題置於圖的頂部(而不是每個圖)可能就足夠了,例如使用suptitle
。
def applyPlotStyle():
plt.ylabel('Time(s)');
plt.xticks(range(100), rotation=30, size='small')
plt.grid(True)
def plotSeries():
applyPlotStyle()
plt.plot(xl, serial_full, 'r--')
plt.plot(xl, acc, 'bs')
plt.plot(xl, cublas, 'g^')
plt.suptitle('Matrix multiplication')
plt.subplot(211)
plotSeries()
plt.subplot(212)
plt.yscale('log')
plt.xlabel('Size')
plotSeries()
plt.show()
我編輯你的try塊,以便它不會捕獲任何意外的錯誤。 (該編輯位於審閱隊列中。) – Joooeey