在不少網上文檔和郵件列表中提到了"後端",而且不少初學者會對這個術語迷惑。matplotlib把不一樣使用情形和輸出格式做爲目標。一些人用matplotlib在python shell上交互,當他們輸入命令可以彈出繪圖窗口。一些人把matplotlib嵌入到其餘的用戶圖形接口如:wxpython或者pygtk中來編寫豐富的應用程序。有些人用matplotlib使用到批處理腳本中,從數字模擬中生成Postscript圖片,還有些人用在web應用服務器中來動態生成圖。html
爲了支持全部的使用情形,matplotlib可以產生不一樣的輸出,而把每個不一樣輸出的能力叫作一個後端。而前端就是用戶須要處理的代碼,如繪圖代碼,而後後端作的就是全部看不到的辛苦工做來生成視圖窗口。這裏有兩種不一樣類型的後端:前端
2.硬拷貝後端,也叫作非交互式後端,用來生成圖像文件(PNG,SVG,PDF, PS) python
主要有兩種方式配置你的後端。 linux
import matplotlib matplotlib.use('PS') # 默認生成postscript輸出。
若是你使用use命令,必須在import matplotlib.pyplot或者matplotlib.pylab以前設置。web
注意: 後端的名字是不區分大小寫的,如: 「GTKAgg」和「gtkagg」是同樣的。shell
使用常規方式安裝matplotlib如二進制安裝包或者linux發行包,那麼一個好的默認後端已經設置好了,即容許你交互式工做也能夠從腳本文件中繪製,能夠輸出到屏幕也能夠輸出到文件。因此你也沒必要去使用上面給出的方法去初始化了。macos
然而,若是你想要寫用戶圖形接口或者web應用服務器(在web應用服務器中使用Matplotlib),或者須要更好理解它是怎麼進行的,請閱讀下去。對於圖形化用戶接口,爲了使事情更加可定製化,matplotlib區分了渲染器(繪圖)和繪圖面板(顯示繪圖的地方)的概念。對於用戶接口,典型的渲染器是Agg,它是使用Anti-Grain Geometry C++庫來產生光柵(像素)圖。全部的用戶接口除了macosx外,均可以和agg同樣來渲染,如WXAgg,GTKAgg,QT4Agg,TKAgg。另外,一些用戶接口支持其餘的渲染引擎。例如:使用GTK,你能夠選擇GDK渲染(後端爲GTK), 也可使用Cairo渲染(後端爲GTKCairo)後端
對於渲染引擎,能夠用向量或者光柵渲染器來區別。向量圖語言畫圖命令有點像"從這個點到那個點畫條線",因此是能夠任意比例縮放。光柵後端經過每英寸每點的像素來產生線條。服務器
這裏對matplotlib渲染器作個總結(沒有等級前後次序,都是非交互式的後端,擁有寫入到文件中的能力)svg
渲染器 | 文件類型 | 描述 |
---|---|---|
AGG | png | 光柵圖 –使用 Anti-Grain Geometry 高質量渲染引擎 |
PS | ps eps | 矢量圖 – Postscript 輸出 |
矢量圖– 可攜帶格式 | ||
SVG | svg | 矢量圖 – 可伸縮矢量圖形 |
Cairo | png ps pdf svg ... | 矢量圖 – Cairo圖 |
GDK | png jpg tiff ... | 光柵圖 – gimp |
還有一些支持用戶接口和渲染器緊密結合的後端,他們是交互式的後端,擁有在屏幕上展現的能力,使用上表中適當的渲染器來寫入到文件中。
後端 | 描述 |
---|---|
GTKAgg | Agg渲染器輸出到GTK繪圖面板(須要PyGTK) |
GTK | GDK渲染器輸出到GTK繪圖面板(不推薦,須要PyGTK) |
GTKCairo | Cairo渲染器輸出到GTK繪圖面板(須要PyGTK) |
WXAgg | Agg渲染器輸出到wxWidgets繪圖面板(須要wxPython) |
WX | 原生wxWidgets繪圖輸出到wxWidgets繪圖面板(不推薦,須要wxPython) |
TkAgg | Agg渲染器輸出到Tk繪圖面板(須要Tkinter) |
QtAgg | Agg渲染器輸出到Qt繪圖面板(不推薦,請使用Qt4Agg,須要PyQt) |
Qt4Agg | Agg渲染器輸出到Qt4繪圖面板(須要PyQt4) |
FLTKAgg | Agg渲染器輸出到FLTK繪圖面板(須要pyFLTK, 使用不是很廣,考慮使用TKAgg,GTKAgg,WXAgg,或者QT4Agg替代) |
macosx | Cocoa渲染器在osx上。(目前在非交互式模式缺乏阻塞show()行爲) |