Matplotlib繪圖基礎之子圖詳解
使用Matplotlib對分析結果可視化時,比較各類分析結果是常見的場景。
在這類場景之下,將多個分析結果繪制在一張圖上,可以幫助用戶方便地組合和分析多個數(shù)據(jù)集,提高數(shù)據(jù)可視化的效率和準確性。
本篇介紹Matplotlib繪制子圖的常用方式和技巧。
1. 添加子圖的方式
添加子圖主要有兩種方式,
一種是函數(shù)式風格:(也就是上一篇畫布中介紹的方式)
import numpy as np import matplotlib import matplotlib.pyplot as plt %matplotlib inline x = np.array(range(0, 8)) fig = plt.figure(figsize=[6,4]) fig.add_subplot(211) # 2行1列的第一個 y = np.random.randint(1, 100, 8) plt.plot(x, y) fig.add_subplot(212) # 2行1列的第二個 y = np.random.randint(1, 100, 8) plt.plot(x, y)

另一種是面向對象風格:(使用 Axes 對象)
x = np.array(range(0, 8)) fig, ax = plt.subplots(1, 2) # 設置子圖1行2列 y = np.random.randint(1, 100, 8) ax[0].plot(x, y) y = np.random.randint(1, 100, 8) ax[1].plot(x, y)

上面設置好子圖的布局之后,添加子圖的順序是從上到下,從左到右。
2. 子圖的布局
子圖的布局是按照行列設置的,設置之后,相應的位置可以添加子圖。
x = np.array(range(0, 8))
rows, cols = 2, 2 # 2行2列,4個子圖
fig, ax = plt.subplots(rows, cols)
for i in range(rows):
for j in range(cols):
y = np.random.randint(1, 100, 8)
ax[i, j].plot(x, y) # i,j定位子圖的位置
子圖按照網(wǎng)格布局時,我們看到上面4個子圖的Y軸刻度不一樣,這樣不利于比較。
x = np.array(range(0, 8))
rows, cols = 2, 2 # 2行2列,4個子圖
fig, ax = plt.subplots(rows, cols, sharey='all')
for i in range(rows):
for j in range(cols):
y = np.random.randint(1, 100, 8)
ax[i, j].plot(x, y) # i,j定位子圖的位置
設置 sharey='all'之后,Y軸刻度保持一致,這樣比較曲線才有意義。
上面的示例中 X軸刻度是一致的,如果不一致,可以用 sharex 屬性來設置。
3. 復雜的布局
3.1. 不規(guī)則的網(wǎng)格
除了規(guī)則的網(wǎng)格布局,還可以通過 GridSpec 設置不規(guī)則的網(wǎng)格。
比如:
rows, cols = 3, 3 grid = plt.GridSpec(rows, cols) plt.subplot(grid[0, :2]) plt.subplot(grid[0, 2]) plt.subplot(grid[1, 0]) plt.subplot(grid[1, 1:]) plt.subplot(grid[2, :])

上例中設置了3行3列的網(wǎng)格,但是不是每個圖形占用幾個網(wǎng)格是可以調(diào)整的。
3.2. 嵌套圖形
除了網(wǎng)格,還可以通過相對定位的方式來繪制多個子圖。
fig = plt.figure() fig.add_axes([0.1, 0.1, 1, 1]) fig.add_axes([0.3, 0.3, 0.3, 0.3]) fig.add_axes([0.7, 0.6, 0.3, 0.2])

上面按相對位置添加子圖的函數(shù) add_axes的參數(shù)是一個4元列表。
這個列表4個元素的含義:
- 第一個元素表示子圖左下角距離畫布左邊的距離占畫布總寬度的比例
- 第二個元素表示子圖左下角距離畫布底邊的距離占畫布總高度的比例
- 第三個元素表示子圖寬度占畫布總寬度的比例
- 第三個元素表示子圖高度占畫布總高度的比例
注意,這里的4個值都是比例。
4. 總結回顧
Matplotlib 中的每個子圖可以有自己的標簽、大小、位置和樣式,可以方便地組合成一個復雜的圖形。
我們一般在下列場景中使用子圖:
- 數(shù)據(jù)可視化:將多個數(shù)據(jù)集在同一張圖中顯示,進行對比和分析。
- 圖表組合:將多個圖表組合在一起,形成一個綜合性的圖形。
- 數(shù)據(jù)分析:將多個數(shù)據(jù)集在同一張圖中顯示,進行篩選和篩選。
- 可視化規(guī)范化:將多個來源不同的數(shù)據(jù)集在同一張圖中顯示,保證圖形的一致性和準確性。
到此這篇關于Matplotlib繪圖基礎之子圖詳解的文章就介紹到這了,更多相關Matplotlib子圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
輕量級的Web框架Flask 中模塊化應用的實現(xiàn)
說到flask的模塊化,大家可能第一時間想到的都是藍圖,今天我們不討論藍圖,先從0.2版本中的Module類的實現(xiàn)講起2017-09-09
Tensorflow 訓練自己的數(shù)據(jù)集將數(shù)據(jù)直接導入到內(nèi)存
這篇文章主要介紹了Tensorflow 訓練自己的數(shù)據(jù)集將數(shù)據(jù)直接導入到內(nèi)存,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
用Python計算三角函數(shù)之a(chǎn)cos()方法的使用
這篇文章主要介紹了用Python計算三角函數(shù)之a(chǎn)cos()方法的使用,是Python學習中的基礎知識,需要的朋友可以參考下2015-05-05
Python+PyQt5實現(xiàn)網(wǎng)口功能測試詳解
這篇文章主要為大家詳細介紹了Python+PyQt5實現(xiàn)網(wǎng)口功能測試的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-02-02
Python django框架開發(fā)發(fā)布會簽到系統(tǒng)(web開發(fā))
這篇文章主要介紹了Python django框架開發(fā)發(fā)布會簽到系統(tǒng)(web開發(fā)),本文通過實例代碼效果展示截圖的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
Pandas設置DataFrame的index索引起始值為1的兩種方法
DataFrame中的index索引列默認是從0開始的,那么我們?nèi)绾卧O置index索引列起始值從1開始呢,本文主要介紹了Pandas設置DataFrame的index索引起始值為1的兩種方法,感興趣的可以了解一下2024-07-07
python測試框架unittest和pytest區(qū)別
這篇文章主要介紹了python測試框架unittest和pytest區(qū)別,幫助大家更好的理解和學習使用python進行自動化測試,感興趣的朋友可以了解下2021-04-04

