簡(jiǎn)介
原文:Introduction
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
Matplotlib 是一個(gè)用于在 Python 中繪制數(shù)組的 2D 圖形庫(kù)。雖然它起源于模仿 MATLAB?[1] 圖形命令,但它獨(dú)立于 MATLAB,可以以 Pythonic 和面向?qū)ο蟮姆绞绞褂谩km然 Matplotlib 主要是在純 Python 中編寫的,但它大量使用 NumPy 和其他擴(kuò)展代碼,即使對(duì)于大型數(shù)組也能提供良好的性能。
Matplotlib 的設(shè)計(jì)理念是,你應(yīng)該能夠使用幾個(gè),或者只有一個(gè)命令創(chuàng)建簡(jiǎn)單的圖形。如果你想看到你的數(shù)據(jù)的直方圖,你不需要實(shí)例化對(duì)象,調(diào)用方法,設(shè)置屬性等等;它應(yīng)該能夠工作。
多年來,我常常使用 MATLAB 進(jìn)行數(shù)據(jù)分析和可視化。 MATLAB 擅長(zhǎng)繪制漂亮的圖形。當(dāng)我開始處理 EEG 數(shù)據(jù)時(shí),我發(fā)現(xiàn)我需要編寫應(yīng)用程序來與我的數(shù)據(jù)交互,并在 MATLAB 中開發(fā)了一個(gè) EEG 分析應(yīng)用程序。隨著應(yīng)用程序越來越復(fù)雜,需要與數(shù)據(jù)庫(kù),http 服務(wù)器交互,并操作復(fù)雜的數(shù)據(jù)結(jié)構(gòu),我開始與 MATLAB 作為一種編程語言的限制而抗?fàn)?,并決定遷移到 Python。 Python 作為一種編程語言,彌補(bǔ)了 MATLAB 的所有缺陷,但我很難找到一個(gè) 2D 繪圖包(3D VTK 則超過了我的所有需求)。
當(dāng)我去尋找一個(gè) Python 繪圖包時(shí),我有幾個(gè)要求:
- 繪圖應(yīng)該看起來不錯(cuò) - 發(fā)布質(zhì)量。 對(duì)我來說一個(gè)重要的要求是文本看起來不錯(cuò)(抗鋸齒等)
- 用于包含 TeX 文檔的 Postscript 輸出
- 可嵌入圖形用戶界面用于應(yīng)用程序開發(fā)
- 代碼應(yīng)該足夠容易,我可以理解它,并擴(kuò)展它
- 繪圖應(yīng)該很容易
沒有找到適合我的包,我做了任何自稱 Python 程序員會(huì)做的事情:擼起我的袖子開始自己造。我沒有任何真正的計(jì)算機(jī)圖形經(jīng)驗(yàn),決定模仿 MATLAB 的繪圖功能,因?yàn)?MATLAB 做得很好。這有額外的優(yōu)勢(shì),許多人有很多 MATLAB 的經(jīng)驗(yàn),因此,他們可以很快開始在 python 中繪圖。從開發(fā)人員的角度來看,擁有固定的用戶接口(pylab 接口)非常有用,因?yàn)榇a庫(kù)的內(nèi)容可以重新設(shè)計(jì),而不會(huì)影響用戶代碼。
Matplotlib 代碼在概念上分為三個(gè)部分:pylab 接口是由matplotlib.pylab提供的函數(shù)集,允許用戶使用非常類似于 MATLAB 圖生成代碼(Pyplot 教程)的代碼創(chuàng)建繪圖。 Matplotlib 前端或 Matplotlib API 是一組重要的類,創(chuàng)建和管理圖形,文本,線條,圖表等(藝術(shù)家教程)。這是一個(gè)對(duì)輸出無所了解的抽象接口。后端是設(shè)備相關(guān)的繪圖設(shè)備,也稱為渲染器,將前端表示轉(zhuǎn)換為打印件或顯示設(shè)備(什么是后端?)。后端示例:PS 創(chuàng)建 PostScript? 打印件,SVG 創(chuàng)建可縮放矢量圖形打印件,Agg 使用 Matplotlib 附帶的高質(zhì)量反顆粒幾何庫(kù)創(chuàng)建 PNG 輸出,GTK 在 Gtk+ 應(yīng)用程序中嵌入 Matplotlib,GTKAgg 使用反顆粒渲染器創(chuàng)建圖形并將其嵌入到 Gtk+ 應(yīng)用程序中,以及用于 PDF,WxWidgets,Tkinter 等。
Matplotlib 被很多人在許多不同的上下文中使用。有些人希望自動(dòng)生成 PostScript 文件以發(fā)送給打印機(jī)或發(fā)布商。其他人在 Web 應(yīng)用程序服務(wù)器上部署 Matplotlib 來生成 PNG 輸出,并包含在動(dòng)態(tài)生成的網(wǎng)頁(yè)中。一些人在 Windows? 上的 Tkinter 的 Python shell 中以交互方式使用 Matplotlib。我的主要用途是將 Matplotlib 嵌入 Windows,Linux 和 Macintosh OS X 上運(yùn)行的 Gtk+ EEG 應(yīng)用程序中。
[1] MATLAB 是 MathWorks 公司的注冊(cè)商標(biāo)。