1. 程式人生 > 程式設計 >python Matplotlib資料視覺化(1):簡單入門

python Matplotlib資料視覺化(1):簡單入門

1 matplot入門指南

matplotlib是Python科學計算中使用最多的一個視覺化庫,功能豐富,提供了非常多的視覺化方案,基本能夠滿足各種場景下的資料視覺化需求。但功能豐富從另一方面來說也意味著概念、方法、引數繁多,讓許多新手望而卻步。

據我瞭解,大部分人在對matplotlib接觸不深時都是邊畫圖邊百度,諸如這類的問題,我想大家都似曾相識:Python如何畫散點圖,matplotlib怎麼將座標軸標籤旋轉45度,怎麼設定圖例字型大小等等。無論針對哪一個問題,往往都有多種解決方法,搜尋引擎這時候當然會很熱情得將各種五花八門、看似合理、各不相同的解決方案推給我們,對於新手往往就迷失在這些紛雜的答案中,然後覺得matplotlib好複雜。matplotlib設計原則就是追求對每一個圖表細節的完全控制,所以matplotlib原始碼中各種物件很多,甚至各物件間相互應用,錯綜複雜,對同一個物件的設定經常可以呼叫不同的方法來實現,這是matplotlib入門難的原因之一。

對於matplotlib入門階段學習曲線陡峭,我認為還有一個更加重要的原因。無論是在各種出版書籍還是網路部落格中,都少有資料對matplotlib進行深入的系統介紹,大多淺嘗輒止。這些流於表層的資料對於如何用matplotlib作圖沒有進行深入的分析,大多隻介紹如何呼叫pyplot模組中的方法進行作圖。pyplot是matplotlib中提供的一個頂層模組,提供許多方法實現了快速、簡便作圖,幾行程式碼就可以完成一幅圖的創作,但是,這種方法作圖卻讓新手對matplotlib圖形的認識變得粗淺,也很難實現對圖形的更加精細控制,底層定製能力有限,最終讓新手對matplotlib咬牙切齒。這種方法就想吃快餐,快速方便,但是吃多了難免營養不良。

面對matplotlib入門階段的這兩個問題,怎麼辦呢?

matplotlib其實提供了兩類介面實現作圖。第一類基於狀態的介面,就是上文中提到的pyplot進行作圖,這類介面對matplotlib中更加底層的物件進行封裝,以仿MATLAB作圖風格的方式讓作圖更加簡單方便。至於為什麼叫基於狀態,我的觀點是pyplot所有作圖動作都是預設在當前出於啟用的元素上進行,要切換到其他元素作圖,就要使另一元素啟用。第二類介面是基於物件的介面,這種方法是使用買你想物件的方法來作圖,認為圖形中每一個元素都是一種物件,通過呼叫更加底層物件來實現作圖。這種方法程式碼量更多,但是讓使用者對matplotlib圖形的構成有了更深的認識,也讓使用者對圖形的每一個元素有更強的掌控力。

所以,在使用matplotlib作圖過程中,本文建議在學習階段多使用基於物件的方法進行作圖,只要掌握了基於物件的方法作圖,後面使用pyplot作圖自然水到渠成。本文後續大部分介紹也是基於這一種方法。

2 安裝與匯入

  • 安裝

matplotlib的安裝與Python中其他第三方庫安裝方法無異

pip install -i https://pypi.douban.com/simple matplotlib
  • 匯入

進行匯入操作時通常不會直接將整個matplotlib包匯入,而是匯入matplotlib包中最為常用的pyplot模組,一般的,我們習慣將pyplot匯入時起一個簡稱plt。

import matplotlib.pyplot as plt

3 圖的構成

在使用matplotlib進行繪圖之前,理解matplotlib圖表構成是非常有必要的。matplotlib圖表有三個非常重要的概念:figure、axes、axies。 三者之間的關係構成了matplotlib圖表的整體佈局,如下圖所示。

python Matplotlib資料視覺化(1):簡單入門

在matplotlib圖表中,至少有一個figure,figure可以理解為一張畫布,畫布上面可以畫多個axes,這裡的axes我理解為座標系,每個座標系可以有多個axis,也就是有多條座標軸。

下圖是在matplotlib官方文件中展示的一張圖片,進一步的很清晰展示了matplotlib圖表佈局上的元件構成:

python Matplotlib資料視覺化(1):簡單入門

上圖中,藍色部分文字是各元件的名稱,請牢記各元件的名稱,方便在對各元件進行設定是呼叫函式,因為元件的名稱與函式名是相似的。其實,在matplotlib中,在figure中的所有元件,包括圖一中的axes、axies甚至是figure和圖中出現的所有元件都稱為artist,因為這些元件均繼承於一個名為Artist的父類。根據所在位置和作用,我們可以將matplotlib所有artist可以劃分到三個層次:

(1)figure層:畫布,這是最低層的容器,用於容納axes。
(2)axes層:座標系,也成為軸域,第二層容器,用於容納axis。
(3)axis層:座標軸,也包含座標軸上更加細微的元件。
使用matplotlib進行作圖時,按照這個層次結構順序進行建立完成作圖。接下來,我們分別對figure、axes、axis進行展開介紹。

3 總結

本篇部落格主要是為matplotlib如何入門以及matplotlib巨集觀層面的容器佈局做了一番介紹,希望這番介紹能夠讓各位讀者對matplotlib有一個更加正確、深入的認識。

最後,還是想說一句,matplotlib很強,只不過目前無論是網路上還是市場上的matplotlib資料大多屬於快餐類別,吃多了就容易營養不良,造成後繼無力。當然,pyplot只是快餐,卻不是毒藥,因為pyplot中確實提供了很多強大的方法實習縣對圖形的管理。本文強烈建議(官方文件中也提出了),如果只是簡單得對資料進行展示,那麼當然可以使用pyplot完成,但是如果需要更加精細的對圖片進行設定,那麼建議使用pyplot中的方法來建立matplotlib圖形的容器物件,因為pyplot建立容器物件可以方便得納入matplotlib序列中進行管理,有了容器物件之後,後續的畫圖,請勿通過再pyplot進行,最好是通過容器物件進行操作。

入門學習階段,無論如何,請走基於物件作圖這條路!!!

在下一篇部落格中,我將對這三層容器物件開始,循序漸進地介紹基於物件的作圖方式。

作者:奧辰

微訊號:chb1137796095

Github:https://github.com/ChenHuabin321

歡迎加V交流,共同學習,共同進步!

以上就是python Matplotlib資料視覺化(1):簡單入門的詳細內容,更多關於python Matplotlib資料視覺化的資料請關注我們其它相關文章!