天天看點

Matplotlib學習筆記backendmatplotlib的互動和非互動模式

  • backend
  • matplotlib的互動和非互動模式
    • 互動模式
    • 非互動模式

backend

參考matplotlib官網matplotlib.org

backend是為matplotlib中的繪圖功能做幕後工作的,對應的’frontend’指的就是你編輯的繪圖指令。通過設定’backend’可以使得matplotlib适應不同的應用場景,或者說輸出形式,例如:python中的指令行模式下彈出的figure,圖形界面的工具wxpython中嵌入的matplotlib,網頁應用服務,批處理腳本生成可視化資料等。

backend可以分為兩類:互動式的,包括指令行以及圖形界面的內建開發環境;輸出圖檔檔案(格式為PNG,JPG,PDF等)的。

backend的設定有四種方法,在此我隻總結官方建議的兩種(後者優先級高):

1. 通過修改matplotlibrc檔案(沒有字尾)内容,matplotlibrc可能存放的位置有三個:

a. ~/.config/matplotlib/matplotlibrc

b. /usr/local/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc

c. path-of-working

你可以通過’locate’指令來查找,目前工作路徑中的matplotlib優先級最高。

要在python中檢視目前是哪個檔案在支配設定,可以在python指令行模式下輸入以下指令:

>>> import matplotlib
>>> matplotlib.matplotlib_fname()
           

就可以看到了。

2. 通過在python檔案中定義,例如PS模式的設定:

>>>import matplotlib
>>>matplotlib.use('PS')   # generate postscript output by default
           

注意兩點,一是backend的參數不區分大小寫,例如’TkAgg’等同于’tkagg’,另一點是通常情況matplotlib安裝完成後的設定是可以提供各種應用場景的,是最優的,一般情況不需要更改,除非是圖形化內建開發環境的開發者或者網絡應用伺服器的開發者。(PS:我就是看了一個包的README,然後改了backend設定,然後就不能正常導入pylab了,還好我的matplotlibrc有備份,查到了問題又改回來了)。

matplotlib的互動和非互動模式

互動模式

開啟互動模式的方式是:

>>> import matplotlib.pyplot as plt
>>> plt.ion()
           

互動模式中任何繪圖動作都會直接立即展現在輸出中,在python或ipython的指令行模式下,指令行互動不受影響。

非互動模式

關閉互動模式的方法是:

>>> import matplotlib.pyplot as plt
>>> plt.ioff()
           

非互動模式在’show()’動作前輸出是不會有任何變化的,如果要重新整理輸出,那麼進行’show()’動作,但是此時指令行會被‘冰凍’,無法繼續互動,除非手動殺掉輸出視窗。但是這樣可以防止輸出的過度頻繁重新整理。