Matplotlib繪圖基礎(chǔ)之子圖詳解
使用Matplotlib
對分析結(jié)果可視化時,比較各類分析結(jié)果是常見的場景。
在這類場景之下,將多個分析結(jié)果繪制在一張圖上,可以幫助用戶方便地組合和分析多個數(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)
另一種是面向?qū)ο箫L格:(使用 Axes
對象)
x = np.array(range(0, 8)) fig, ax = plt.subplots(1, 2) # 設(shè)置子圖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)
上面設(shè)置好子圖的布局之后,添加子圖的順序是從上到下,從左到右。
2. 子圖的布局
子圖的布局是按照行列設(shè)置的,設(shè)置之后,相應(yīng)的位置可以添加子圖。
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定位子圖的位置
設(shè)置 sharey='all'
之后,Y軸刻度保持一致,這樣比較曲線才有意義。
上面的示例中 X軸刻度是一致的,如果不一致,可以用 sharex
屬性來設(shè)置。
3. 復(fù)雜的布局
3.1. 不規(guī)則的網(wǎng)格
除了規(guī)則的網(wǎng)格布局,還可以通過 GridSpec 設(shè)置不規(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, :])
上例中設(shè)置了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. 總結(jié)回顧
Matplotlib
中的每個子圖可以有自己的標簽、大小、位置和樣式,可以方便地組合成一個復(fù)雜的圖形。
我們一般在下列場景中使用子圖:
- 數(shù)據(jù)可視化:將多個數(shù)據(jù)集在同一張圖中顯示,進行對比和分析。
- 圖表組合:將多個圖表組合在一起,形成一個綜合性的圖形。
- 數(shù)據(jù)分析:將多個數(shù)據(jù)集在同一張圖中顯示,進行篩選和篩選。
- 可視化規(guī)范化:將多個來源不同的數(shù)據(jù)集在同一張圖中顯示,保證圖形的一致性和準確性。
到此這篇關(guān)于Matplotlib繪圖基礎(chǔ)之子圖詳解的文章就介紹到這了,更多相關(guān)Matplotlib子圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)飛機大戰(zhàn)游戲(pygame版)
這篇文章主要為大家詳細介紹了python實現(xiàn)pygame版的飛機大戰(zhàn)游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02Python調(diào)用易語言動態(tài)鏈接庫實現(xiàn)驗證碼功能
今天成功把易語言調(diào)用驗證碼通殺的DLL在Python中成功調(diào)用了,心理美滋滋的,接著把我的經(jīng)驗及示例代碼分享給大家,希望對大家有所幫助2021-08-08Python傳統(tǒng)圖像處理之皮膚區(qū)域檢測詳解
這篇文章主要介紹了在不同情景下對傳統(tǒng)圖像進行皮膚區(qū)域檢測,文章中的代碼具有一定的參考價值,感興趣的小伙伴可以跟隨小編一起來學習學習2021-12-12