matplotlib添加子圖(拼圖功能)


  我們已經知道,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")  

  效果是這樣的:

   上面一大串代碼,但關鍵點很少:

  1. 生成一個獨立的畫布對象,不影響其他模塊
  2. 在畫布上一個一個的添加子圖對象(subplot)
  3. 每次添加新的子圖,畫筆就會移動到新的子圖上

  只要遵循以上的步驟,就能實現作圖的拼接了~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM