我們已經知道,matplotlib是python中的一個十分好用的作圖庫,它的簡單的使用方法可以在之前的隨筆中找到。傳送門:https://www.cnblogs.com/chester-cs/p/11879444.html
之前沒有涉及到的是一個用途十分廣泛的功能:子圖(拼圖功能),想象我們有四個對比曲線圖,是一個問題不同的算法實現結果。假如一個圖接一個圖畫的畫太拖沓,我們又不想一上來就畫在同一個畫布上,那么這時我們就可以使用拼圖功能。
沒時間解釋了,直接上代碼。以四種排序算法的運行時間曲線為例:
fig = plt.figure() # 生成新的畫布fig fig.set_size_inches(18.5, 10.5) # 調整畫布為合適大小 ax1 = fig.add_subplot(221) # 關鍵點,我們考慮在畫布中加入一個一個的子圖,(221這種排列的含義不必多解釋了吧) plt.plot(Size,INSERTSORT_Mean,'b') plt.plot(Size,INSERTSORT_Mean,'ro') plt.grid() # 畫網格 plt.xlabel("Data Size") plt.ylabel("Time Cost /s") plt.title("INSERTSORT Timecost Mean") # 加上標題 ax2 = fig.add_subplot(222) plt.plot(Size,MERGE_SORT_Mean,'b') plt.plot(Size,MERGE_SORT_Mean,'ro') plt.grid() plt.xlabel("Data Size") plt.ylabel("Time Cost /s") plt.title("MERGESORT Timecost Mean") ax3 = fig.add_subplot(223) plt.plot(Size,HEAPSORT_Mean,'b') plt.plot(Size,HEAPSORT_Mean,'ro') plt.grid() plt.xlabel("Data Size") plt.ylabel("Time Cost /s") plt.title("HEAPSORT Timecost Mean") ax4 = fig.add_subplot(224) plt.plot(Size,QUICKSORT_Mean,'b') plt.plot(Size,QUICKSORT_Mean,'ro') plt.grid() plt.xlabel("Data Size") plt.ylabel("Time Cost /s") plt.title("QUICKSORT Timecost Mean")
效果是這樣的:
上面一大串代碼,但關鍵點很少:
- 生成一個獨立的畫布對象,不影響其他模塊
- 在畫布上一個一個的添加子圖對象(subplot)
- 每次添加新的子圖,畫筆就會移動到新的子圖上
只要遵循以上的步驟,就能實現作圖的拼接了~