一個figure對象包含了多個子圖,可以使用subplot()函數來繪制子圖:
(首先我沒有想明白為啥會有這么多的內容來介紹這一個函數,后來知道了原來這個函數還真的挺多的內容)
言簡意賅:
首先,它的調用是這樣子的:subplot(numbRow , numbCol ,plotNum ) or subplot(numbRow numbCol plotNum),對。看清楚,可以不用逗號分開直接寫在一起也是對的;
解釋一下這是啥玩意:
numbRow是plot圖的行數;numbCol是plot圖的列數;plotNum是指第幾行第幾列的第幾幅圖 ;
舉個例子,如果是subplot (2 ,2 ,1),那么這個figure就是個2*2的矩陣圖,也就是總共有4個圖,1就代表了第一幅圖
也可以寫成subplot(221),這是沒毛病的哈。是不是超級簡單!上個圖:
看到沒,我寫的一個椒鹽噪聲的圖,然后subplot可以分個寫,只不過我用了一個循環的形式了;
對了,還有一種形式差點忘記說了,如果是只有3副圖或者只有5副圖的單數該怎么辦?
這里就不能用循環操作了,因為3副圖的話划分起來得重新排列:
啥意思?比如說,畫一個3副圖的圖像:
首先將整個表按照 2*2
划分
前兩個簡單, 分別是 (2, 2, 1)
和 (2, 2, 2)
但是第三個圖呢, 他占用了 (2, 2, 3)
和 (2, 2, 4)
然后需要對其重新划分, 按照 2 * 1
划分
前兩個圖占用了 (2, 1, 1)
的位置
因此第三個圖占用了 (2, 1, 2)
的位置
直接上代碼大家看一下,其實大同小異,語法都差不多;
import matplotlib.pyplot as plt import numpy as np def f(t): return np.exp(-t) * np.sin(2 * np.pi * t) if __name__ == '__main__': t1 = np.arange(-5, 5, 0.1) t2 = np.arange(-5, 5, 0.2) plt.figure() plt.subplot(221) plt.plot(t1, f(t1), 'bo', t2, f(t2), 'g--') plt.subplot(222) plt.plot(t2, np.cos(2 * np.pi * t2), 'g--') plt.subplot(212) plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) plt.show()
然后這是展示的結果 :
好了,基本上到這里已經差不多了,大家學會了么?