1. 程式人生 > >matplotlib的plt.ion()和plt.ioff()函式

matplotlib的plt.ion()和plt.ioff()函式

           在使用matplotlib的過程中,常常會需要畫很多圖,但是好像並不能同時展示許多圖。這是因為python視覺化庫matplotlib的顯示模式預設為阻塞(block)模式。什麼是阻塞模式那?我的理解就是在plt.show()之後,程式會暫停到那兒,並不會繼續執行下去。如果需要繼續執行程式,就要關閉圖片。那如何展示動態圖或多個視窗呢?這就要使用plt.ion()這個函式,使matplotlib的顯示模式轉換為互動(interactive)模式。即使在指令碼中遇到plt.show(),程式碼還是會繼續執行。下面這段程式碼是展示兩個不同的視窗:

import matplotlib.pyplot as plt
plt.ion()    # 開啟互動模式
# 同時開啟兩個視窗顯示圖片
plt.figure()  #圖片一
plt.imshow(i1)
plt.figure()    #圖片二
plt.imshow(i2)
# 顯示前關掉互動模式
plt.ioff()

面就來講講matplotlib這兩種模式具體的區別

在互動模式下:

1、plt.plot(x)或plt.imshow(x)是直接出影象,不需要plt.show()

2、如果在指令碼中使用ion()命令開啟了互動模式,沒有使用ioff()關閉的話,則影象會一閃而過,並不會常留。要想防止這種情況,需要在plt.show()之前加上ioff()命令。

在阻塞模式下:

1、開啟一個視窗以後必須關掉才能開啟下一個新的視窗。這種情況下,預設是不能像Matlab一樣同時開很多視窗進行對比的。

2、plt.plot(x)或plt.imshow(x)是直接出影象,需要plt.show()後才能顯示影象

參考:  https://blog.csdn.net/zbrwhut/article/details/80625702