matplot.show() 阻塞程序怎麼解決

介紹
在使用matplotlib的過程中,發現不能像matlab一樣同時開幾個窗口進行比較,於是查詢得知了交互模式,但是放在腳本里運行的適合卻總是一閃而過,圖像並不停留,遂仔細閱讀和理解了一下文檔,記下解決辦法,問題比較簡單,僅供菜鳥參考。

python可視化庫matplotlib有兩種顯示模式:

阻塞(block)模式
交互(interactive)模式
在Python Consol命令行中,默認是交互模式。而在python腳本中,matplotlib默認是阻塞模式。

其中的區別是:
在交互模式下:

plt.plot(x)或plt.imshow(x)是直接出圖像,不需要plt.show()
如果在腳本中使用ion()命令開啓了交互模式,沒有使用ioff()關閉的話,則圖像會一閃而過,並不會常留。要想防止這種情況,需要在plt.show()之前加上ioff()命令。
在阻塞模式下:

打開一個窗口以後必須關掉才能打開下一個新的窗口。這種情況下,默認是不能像Matlab一樣同時開很多窗口進行對比的。
plt.plot(x)或plt.imshow(x)是直接出圖像,需要plt.show()後才能顯示圖像
示例
下面這個例子講的是如何像matlab一樣同時打開多個窗口顯示圖片或線條進行比較,同時也是在腳本中開啓交互模式後圖像一閃而過的解決辦法:

    import matplotlib.pyplot as plt
    plt.ion()    # 打開交互模式
    # 同時打開兩個窗口顯示圖片
    plt.figure()
    plt.imshow(i1)
    plt.figure()
    plt.imshow(i2)
    # 顯示前關掉交互模式
    plt.ioff()
    plt.show()
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章