在我們的日常使用過程用,我們通常需要在一個窗口上面顯示多個圖像,那么怎么樣才能這樣顯示呢?下面我們來介紹一下
一、plot.figure()函數
函數的原型如下:
1 figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
其中num:圖像編號或名稱,數字為編號 ,字符串為名稱。figsize:指定figure的寬和高,單位為英寸。dpi參數指定繪圖對象的分辨率,即每英寸多少個像素,缺省值為80。
二、plot.subplot()函數
1 subplot(nrows,ncols,index,**fig_kw)
其中nrows就是行數。ncols是列數。index索引號就是畫第幾張圖。
比如subplot(1,2,1),就是在figure中水平畫兩個圖片。
三、plot.figure()和plot.subplot()有什么關系
figure就相當於創建一個畫布,subplot就相當於在這個畫布上圈一塊區域只讓自己用,然后自己只在這個區域內作畫。就像下圖:
四、plot.figure()和plot.subplot()簡單舉例
下面直接是程序,大家可以看下效果。
1 import matplotlib.pyplot as plt 2 import matplotlib.image as rimg 3 import numpy as np 4 num = np.random.rand(10) 5 img = rimg.imread("大熊貓.png") 6 plt.figure() 7 plt.subplot(2,2,1) 8 plt.imshow(img) 9 plt.subplot(2,2,2) 10 plt.bar(range(10),num) 11 plt.subplot(2,2,4) 12 plt.imshow(img) 13 plt.show()
顯示效果如下:
現在我們多個圖像顯示完成了,那么我想讓這個窗口不關閉,刷新一下畫布,顯示刷新后的圖像咋辦啊?接下來我們就來解決這個問題
下面我們直接上代碼在講解。
1 import matplotlib.pyplot as plt 2 import matplotlib.image as rimg 3 import numpy as np 4 #打開交互模式 5 plt.ion() 6 num = np.random.rand(10) 7 img = rimg.imread("大熊貓.png") 8 for i in range(200): 9 #plt.figure() #不能加這個,因為這個會創建一個新的畫布 10 plt.subplot(2,2,1) 11 plt.imshow(img) 12 print(i) 13 if (i%2 == 0): 14 plt.subplot(2,2,2) 15 else: 16 plt.subplot(2,2,3) 17 plt.bar(range(10),num) 18 plt.subplot(2,2,4) 19 plt.imshow(img) 20 #停頓時間 21 plt.pause(0.1) 22 #清除當前畫布 23 plt.clf() 24 plt.ioff()
現在我們來分析一下代碼,把主要的講解一下。
1、為什么不能加figure()?
因為加上這個函數就會新建一個畫布,打開一個新的窗口,這樣圖像就沒法在一個窗口上顯示了,這是我們不希望的結果
2、為什么沒有了plt.show()函數,畫布是怎么更新的?
因為運行到plt.pause()這個函數時,如果當前有活動的畫布,那個這個函數會先執行畫布的更新和顯示,所以就不用了show函數來顯示了。
3、怎么清除畫布上的內容的?
調用plt.clf()函數來清除畫布
讓我們來看看效果咋樣: