matplot怎么在一個窗口上顯示多個圖像,並且動態顯示


在我們的日常使用過程用,我們通常需要在一個窗口上面顯示多個圖像,那么怎么樣才能這樣顯示呢?下面我們來介紹一下

一、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()函數來清除畫布

讓我們來看看效果咋樣:


免責聲明!

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



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