卷2:第11章 matplotlib

2018-02-24 15:55 更新

matplotlib是基于Python的繪圖庫,廣泛用于Python科學(xué)計算界。它完整支持二維繪圖以及部分支持三維繪圖。該繪圖庫致力于能適應(yīng)廣泛的用戶需求。它可以根據(jù)所選的用戶接口工具來嵌入繪圖算法。與此同時,對于使用GTK+、Qt、Tk、FLTK、wxWidgets與Cocoa的所有主要桌面操作系統(tǒng),matplotlib能支持交互式繪圖。在Python的交互式shell中,我們可以使用簡單的、過程式的命令交互式地調(diào)用matplotlib來生成圖形,與使用Mathematica、IDL或者M(jìn)ATLAB繪圖非常相似。matplotlib也可以嵌入到無報文頭的Web服務(wù)器中,以提供基于光柵(如PNG格式)與向量(如Postscript、PDF以及紙面效果很好的SVG格式)這兩種格式的圖形硬拷貝。

11.1 硬件鎖問題

我們其中一位開發(fā)者(John Hunter)與他的研究癲癇癥的同事們試圖在不借助專有軟件的情況下進(jìn)行腦皮層電圖(ECoG)分析,于是便有了最初的matplotlib。John Hunter當(dāng)時所在的實驗室只有一份電圖分析軟件的許可證,但有各式各樣的工作人員,如研究生、醫(yī)科學(xué)生、博士后、實習(xí)生、以及研究員,他們輪流共享該專有軟件的硬件電子鎖。生物醫(yī)學(xué)界廣泛使用MATLAB進(jìn)行數(shù)據(jù)分析與可視化,所以Hunter著手使用基于MATLAB的matplotlib來代替專有軟件,這樣很多研究員都可以使用并且對其進(jìn)行擴(kuò)展。但是MATLAB天生將數(shù)據(jù)當(dāng)作浮點數(shù)的數(shù)組來處理。然而在實際情況中,癲癇手術(shù)患者的醫(yī)療記錄具有多種數(shù)據(jù)形式(CT、MRI、ECoG與EEG等),并且存儲在不同的服務(wù)器上。MATLAB作為數(shù)據(jù)管理系統(tǒng)勉強(qiáng)能應(yīng)付這樣的復(fù)雜性。由于感到MATLAB不適合于這項任務(wù),Hunter開始編寫一個新的建立在用戶接口工具GTK+(當(dāng)時是Linux下的主流桌面視窗系統(tǒng))之上的Python應(yīng)用程序。

所以matplotlib這一GTK+應(yīng)用程序最初便被開發(fā)成EEG/ECoG可視化工具。這樣的用例決定了它最初的軟件架構(gòu)。matplotlib最初的設(shè)計也服務(wù)于另一個目的:代替命令驅(qū)動的交互式圖形生成(這一點MATLAB做得很好)工具。MATLAB的設(shè)計方法使得加載數(shù)據(jù)文件與繪圖這樣的任務(wù)非常簡單,而要使用完全面向?qū)ο蟮腁PI則會在語法上過于繁瑣。所以matplotlib也提供狀態(tài)化的腳本編程接口來快速、簡單地生成與MATLAB類似的圖形。因為matplotlib是Python庫,所以用戶可以使用Python中各種豐富的數(shù)據(jù)結(jié)構(gòu),如列表、辭典與集合等等。

args, **kwargs) forwards the function call and its arguments to the appropriate Axes method, and stores the return value to be returned later. Thus the pyplot interface is a fairly thin wrapper around the core Artist API which tries to avoid as much code duplication as possible by exposing the API function, call signature and docstring in the scripting interface with a minimal amount of boilerplate code.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號