解決思路:迴圈中判斷繪圖視窗是否關閉,如果關閉則退出動態繪圖的迴圈
plt生成figure物件時需要指定一個int型別的id(如不指定,plt內部自動生成),可通過該id獲取到figure物件(儲存在matplotlib._pylab_helpers.Gcf.figs),當視窗關閉時,plt儲存的id會被清除,通過判斷id是否存在則可以判斷視窗是否關閉
兩種情況如下,具體見註釋
使用plt繪圖
from matplotlib import pyplot as plt
'''
使用plt繪圖,只會有一個視窗
因此可以通過判斷id數目是否為0來判斷繪圖視窗是否關閉
'''
plt.plot() #需要在迴圈外面生成繪圖視窗
while True:
if len(plt.get_fignums())==0:
break
#進行更新資料和繪圖操作
#...
else:
plt.show()
使用figure物件導向繪圖
import matplotlib.pyplot as plt
'''
plt.figure()生成fig時指定id,直接通過id是否存在即可判斷
如果不指定id,也可通過fig.canvas.manager.num
順便一提,直接使用plt繪圖時的fig物件可以通過plt.gcf()獲取
因此也可獲取其id後通過這種方法判斷
'''
figID=1
fig=plt.figure(figID)
while True:
if not plt.fignum_exists(figID):
break
#進行更新資料和繪圖操作
#...
else:
plt.show()
本作品採用《CC 協議》,轉載必須註明作者和本文連結