matplotlib是python科學計算中使用最多的乙個視覺化庫,功能豐富,提供了非常多的視覺化方案,基本能夠滿足各種場景下的資料視覺化需求。但功能豐富從另一方面來說也意味著概念、方法、引數繁多,讓許多新手望而卻步。
對於matplotlib入門階段學習曲線陡峭,我認為還有乙個更加重要的原因。無論是在各種出版書籍還是網路部落格中,都少有資料對matplotlib進行深入的系統介紹,大多淺嘗輒止。這些流於表層的資料對於如何用matplotlib作圖沒有進行深入的分析,大多只介紹如何呼叫pyplot模組中的方法進行作圖。pyplot是matplotlib中提供的乙個頂層模組,提供許多方法實現了快速、簡便作圖,幾行**就可以完成一幅圖的創作,但是,這種方法作圖卻讓新手對matplotlib圖形的認識變得粗淺,也很難實現對圖形的更加精細控制,底層定製能力有限,最終讓新手對matplotlib咬牙切齒。這種方法就想吃快餐,快速方便,但是吃多了難免營養不良。
面對matplotlib入門階段的這兩個問題,怎麼辦呢?
matplotlib其實提供了兩類介面實現作圖。第一類基於狀態的介面,就是上文中提到的pyplot進行作圖,這類介面對matplotlib中更加底層的物件進行封裝,以仿matlab作圖風格的方式讓作圖更加簡單方便。至於為什麼叫基於狀態,我的觀點是pyplot所有作圖動作都是預設在當前出於啟用的元素上進行,要切換到其他元素作圖,就要使另一元素啟用。第二類介面是基於物件的介面,這種方法是使用買你想物件的方法來作圖,認為圖形中每乙個元素都是一種物件,通過呼叫更加底層物件來實現作圖。這種方法**量更多,但是讓使用者對matplotlib圖形的構成有了更深的認識,也讓使用者對圖形的每乙個元素有更強的掌控力。
所以,在使用matplotlib作圖過程中,本文建議在學習階段多使用基於物件的方法進行作圖,只要掌握了基於物件的方法作圖,後面使用pyplot作圖自然水到渠成。本文後續大部分介紹也是基於這一種方法。
in [1]:
import
matplotlib.pyplot
asplt
在使用matplotlib進行繪圖之前,理解matplotlib圖表構成是非常有必要的。matplotlib圖表有三個非常重要的概念:figure、axes、axies。 三者之間的關係構成了matplotlib圖表的整體布局,如下圖1所示。
圖1 matplotlib圖表布局
在matplotlib圖表中,至少有乙個figure,figure可以理解為一張畫布,畫布上面可以畫多個axes,這裡的axes我理解為座標系,每個座標系可以有多個axis,也就是有多條座標軸。
圖2 matplotlib圖構成
圖2中,藍色部分文字是各元件的名稱,請牢記各元件的名稱,方便在對各元件進行設定是呼叫函式,因為元件的名稱與函式名是相似的。其實,在matplotlib中,在figure中的所有元件,包括圖一中的axes、axies甚至是figure和圖2**現的所有元件都稱為artist,因為這些元件均繼承於乙個名為artist的父類。根據所在位置和作用,我們可以將matplotlib所有artist可以劃分到三個層次:
(1)figure層:畫布,這是最低層的容器,用於容納axes。
(2)axes層:座標系,也成為軸域,第二層容器,用於容納axis。
(3)axis層:座標軸,也包含座標軸上更加細微的元件。
使用matplotlib進行作圖時,按照這個層次結構順序進行建立完成作圖。接下來,我們分別對figure、axes、axis進行展開介紹。
本篇部落格主要是為matplotlib如何入門以及matplotlib巨集觀層面的容器布局做了一番介紹,希望這番介紹能夠讓各位讀者對matplotlib有乙個更加正確、深入的認識。
最後,還是想說一句,matplotlib很強,只不過目前無論是網路上還是市場上的matplotlib資料大多屬於快餐類別,吃多了就容易營養不良,造成後繼無力。當然,pyplot只是快餐,卻不是毒藥,因為pyplot中確實提供了很多強大的方法實習縣對圖形的管理。本**烈建議(官方文件中也提出了),如果只是簡單得對資料進行展示,那麼當然可以使用pyplot完成,但是如果需要更加精細的對進行設定,那麼建議使用pyplot中的方法來建立matplotlib圖形的容器物件,因為pyplot建立容器物件可以方便得納入matplotlib序列中進行管理,有了容器物件之後,後續的畫圖,請勿通過再pyplot進行,最好是通過容器物件進行操作。
入門學習階段,無論如何,請走基於物件作圖這條路!!!
Matplotlib 資料視覺化
資料視覺化,更有意義的說法是,data communication for audiences。matplotlib總是因為它的aesthetics和amounts of codes被些許詬病。然而,我覺得熟練的使用之後,它的靈活性還是比較強的 相比ggplot 所以這篇文章的適合讀者是 具體的實現...
資料視覺化 matplotlib
直方圖plt.hist 資料,分組數,density true 複製 條形圖plt.bar x,y,color 顏色 plt.barh 複製 散點圖plt.scatter x,y 複製 折線圖 繪製多個圖形,多次plot plt.plot x,y,label 標籤 複製 通用操作plt.figure...
matplotlib視覺化excel資料
matploylib是python的一基礎視覺化工具,可以用於處理大量資料或載入api完成視覺化。比如處理excle資料,如下 import openpyxl import matplotlib.pyplot as plt import numpy as np filename g40.xlsx i...