【Python 教程】Matplotlib 數據類型匯總

Matplotlib 是一個用于數據可視化的 Python 模塊。Matplotlib 和 Pandas 可作為互補工具,因為前者內建了大量的圖表庫,進一步提高了數據的可視性。
這篇教程雖然沒有辦法完全介紹 Matplotlib 的每一個細節(jié),但我們還是可以嘗試覆蓋 Matplotlib 的各種基礎功能,包括幾個比較有趣的進階項目。
閱讀這篇教程需要具有一定的 Python 和 Pandas 基礎,如果之前對 Python 完全沒有任何了解,歡迎查看我們之前的相關教程:
基礎線形圖
創(chuàng)建最簡單的線形圖只需要一行代碼,隨后通過?plt.show()
?展示圖表即可:

基礎散點圖
繪制散點圖前,我們先來看看?plt.plot()
?的參數內容:(x, y,?格式)。這個格式其實是顏色、標記、線條的縮寫。舉個例子:
'go-'
?為綠色(green)、圓點、無線條,那樣輸出的圖形便是散點圖。
'r*--'
?為紅色(red)、星形、虛線
'ks.'
?為黑色(black)、方形(square)、點線
'bD-.'
?為藍色(blue)、菱形(diamond)、點劃線
這些例子無需硬背,有需要的時候輸入并運行?help(plt.plot)
?即可。

復合圖形
功能強大的 Matplotlib 自然不會滿足于單個圖形,接下來這段將分為兩個部分:在同一圖表中繪制多個數據以及在同一窗口中繪制多個不同的圖表。
在同一圖表中繪制多個數據
這個其實很簡單,只需要重復編寫?plt.plot()
?就可以了。加上標題、標簽名稱和圖例即可輸出以下效果:

繪制多個不同的圖表
我們在 Matplotlib 中繪制圖表時,其實是在一個類似畫布的?figure
?中加入各種各樣的元素,而這里面的子圖被稱之為?axes
(與 XY axis 軸并不相同)。一般而言,一個圖表至少擁有一個子圖。當我們有多個子圖時,這些圖表就會通過行列排序。
如果我們要在同一個畫布中繪制多個子圖,應使用的函數為?plt.subplots(1, 2)
。其中,數字 1、2 分別表示子圖代號,原本的?plt.plot()
?需要分別改成?ax1.plot()
?和?ax2.plot()
。

在?plt.subplots()
?設置?sharey=True
?能讓兩個子圖在 Y 軸上平行,而 dpi 則可以調整圖標的清晰度。
進階圖形
Matplotlib 的圖庫遠比點線圖豐富,即使是更多的圖表、曲線圖都不在話下,我們甚至還可以調整各種參數修改圖表大小和背景顏色等。由于篇幅限制,這里只放出幾個進階圖形的參考圖,有需要的小伙伴可以通過代碼傳送門在線查看 Python 代碼,也可以參考?Matplotlib 的官方文檔。
繪制多個圖表
這一組圖表使用了 numpy 模塊的?randint
?隨機數和?for
?循環(huán)實現:

打開?fourPlots.py
?項目查看代碼:https://55911a1851-share.lightly.teamcode.com
繪制曲線圖(正余弦波)

打開?sincosWave.py
?項目查看代碼:https://55911a1851-share.lightly.teamcode.com
調整背景顏色
Matplotlib 自帶的樣式代碼:

打開?plotBackground.py
?項目查看代碼:https://55911a1851-share.lightly.teamcode.com
添加注釋
plt.text
?和?plt.annotate
?可以分別為圖表添加文本和注釋。如果你想要添加多個注釋,還可以通過 for 多次循環(huán)?plt.text()
?函數。

打開?plotAnnotate.py
?項目查看代碼:https://55911a1851-share.lightly.teamcode.com
調整子圖大小
我們可通過 Matplotlib 自帶的兩個函數繪制多子圖的布局,即?plt.subplot2grid
?和?plt.GridSpec
。

我們甚至還可以在主圖上添加子圖:

打開?subplotSize.py
?及?plotinPlot.py
?項目查看代碼:https://55911a1851-share.lightly.teamcode.com
泡沫圖、柱狀圖、箱型圖和時間序列
我們可以通過?plt.scatter()
?函數動態(tài)改變某個點的顏色和大小,形成泡沫圖的效果,甚至還可以關聯(lián) pandas 數據。

此外,我們還可以通過?plt.step()
、plt.hist()
、plt.boxplot()
、plt.bar()
?繪制不同的圖表效果:

打開?bubblePlot.py
?及?assortedPlot.py
?項目查看代碼:https://55911a1851-share.lightly.teamcode.com
本篇介紹的圖形應用場景各有不同,大家可以根據自己的需求進行嘗試。