當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python matplotlib subplots用法及代碼示例


本文簡要介紹 python 語言中 matplotlib.pyplot.subplots 的用法。

用法

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, width_ratios=None, height_ratios=None, subplot_kw=None, gridspec_kw=None, **fig_kw)

創建一個圖形和一組子圖。

這個實用程序包裝器可以方便地在一次調用中創建子圖的公共布局,包括封閉的圖形對象。

參數
nrows, ncols 整數,默認值:1

子圖網格的行/列數。

sharex, sharey bool 或 {'none', 'all', 'row', 'col'},默認值:False

控製 x (sharex) 或 y (sharey) 軸之間的屬性共享:

  • True 或 'all':x 軸或 y 軸將在所有子圖中共享。

  • 錯誤或'none':每個子圖的 x 軸或 y 軸都是獨立的。

  • 'row':每個子圖行將共享一個 x 軸或 y 軸。

  • 'col':每個子圖列將共享一個 x 軸或 y 軸。

當子圖沿列具有共享 x 軸時,僅創建底部子圖的 x 刻度標簽。類似地,當子圖在一行上有一個共享的 y 軸時,隻會創建第一列子圖的 y 刻度標簽。要稍後打開其他子圖的刻度標簽,請使用 tick_params

當子圖有一個具有單位的共享軸時,調用 set_units 將使用新單位更新每個軸。

squeeze 布爾值,默認值:真
  • 如果為 True,則從返回的 Axes 數組中擠出額外的維度:

    • 如果僅構造一個子圖 (nrows=ncols=1),則生成的單個 Axes 對象作為標量返回。

    • 對於 Nx1 或 1xM 子圖,返回的對象是 Axes 對象的一維 numpy 對象數組。

    • 對於 NxM,N>1 和 M>1 的子圖作為二維數組返回。

  • 如果為 False,則根本不進行任何壓縮:返回的 Axes 對象始終是包含 Axes 實例的 2D 數組,即使它最終是 1x1。

width_ratios 長度類似數組 ncols ,可選

定義列的相對寬度。每列的相對寬度為 width_ratios[i] / sum(width_ratios) 。如果未給出,所有列將具有相同的寬度。相當於gridspec_kw={'width_ratios': [...]}

height_ratios 長度類似數組 nrows ,可選

定義行的相對高度。每行的相對高度為 height_ratios[i] / sum(height_ratios) 。如果沒有給出,所有行將具有相同的高度。方便 gridspec_kw={'height_ratios': [...]}

subplot_kw 字典,可選

帶有傳遞給 add_subplot 調用的關鍵字的字典,用於創建每個子圖。

gridspec_kw 字典,可選

帶有傳遞給 GridSpec 構造函數的關鍵字的字典,用於創建放置子圖的網格。

**fig_kw

所有其他關鍵字參數都傳遞給 pyplot.figure 調用。

返回
fig Figure
ax Axes 或軸數組

ax 可以是單個 Axes 對象,也可以是一組 Axes 對象(如果創建了多個子圖)。結果數組的尺寸可以使用擠壓關鍵字控製,請參見上文。

處理返回值的典型習慣用法是:

# using the variable ax for single a Axes
fig, ax = plt.subplots()

# using the variable axs for multiple Axes
fig, axs = plt.subplots(2, 2)

# using tuple unpacking for multiple Axes
fig, (ax1, ax2) = plt.subplots(1, 2)
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

名稱ax 和複數axs 優於axes,因為對於後者,不清楚它是指單個 Axes 實例還是這些實例的集合。

例子

# First create some toy data:
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

# Create just a figure and only one subplot
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')

# Create two subplots and unpack the output array immediately
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)

# Create four polar axes and access them through the returned array
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)

# Share a X axis with each column of subplots
plt.subplots(2, 2, sharex='col')

# Share a Y axis with each row of subplots
plt.subplots(2, 2, sharey='row')

# Share both X and Y axes with all subplots
plt.subplots(2, 2, sharex='all', sharey='all')

# Note that this is the same as
plt.subplots(2, 2, sharex=True, sharey=True)

# Create figure number 10 with a single subplot
# and clears it if it already exists.
fig, ax = plt.subplots(num=10, clear=True)

相關用法


注:本文由純淨天空篩選整理自skytowner.com大神的英文原創作品 matplotlib.pyplot.subplots。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。