Matplotlib sharex 引數

Salman Mehmood 2023年1月30日
  1. Matplotlib 中的 subplot() 函式
  2. 使用 sharex 引數從多個子圖中共享軸
Matplotlib sharex 引數

本次會議將討論 subplot() 函式和共享軸。我們還將解釋如何使用 sharex 引數 Matplotlib 從多個子圖中共享軸。

Matplotlib 中的 subplot() 函式

subplot() 函式表示單個圖中的多個圖,我們在同一圖中繪製圖。這就是為什麼我們可以在一個圖中有多個圖。

這個 subplot() 函式採用這三個引數。第一個代表行,第二個代表列,第三個引數代表索引。

語法:

subplot(r, c, i)

r 表示行。c 參數列示一列,i 引數是繪圖的索引。使用這些引數將幫助你指定繪圖單元,我們可以按降序調整繪圖位置。

使用 sharex 引數從多個子圖中共享軸

我們將定義我們的繪圖,與哪個軸共享軸無關緊要,但如果我們以"311" 順序定義 subplot 是有意義的。我們有一個軸來共享 x 軸,因此 sharex 將等於你可以與定義的子圖共享。

將軸限制更改為一個軸將自動顯示在另一個軸上,反之亦然。當你瀏覽工具欄時,這些軸將在其共享軸中通過工具欄。

現在,讓我們編寫程式碼並快速檢視解釋。首先,我們需要匯入所需的庫。

import matplotlib.pyplot as plt
import numpy as np

xy 值建立資料,然後我們為 "311" 繪製子圖,其中 "3" 是一行,"1" 是一列。 "1" 是一個索引。

tick_params() 方法將刻度設定到給定的軸。在我們的例子中,我們只是為 x 軸設定它。

axis1 = plt.subplot(311)
plt.plot(range_samples, sine)
plt.tick_params("x", labelsize=6)

在這個 subplot() 方法中,我們將 axis1 傳遞給 sharex 引數。axis1 是儲存第一個子圖的變數,這意味著我們希望與第一個子圖共享第二個子圖的 x 軸。

axis2 = plt.subplot(312, sharex=axis1)

我們建立了第三個帶有共享 xy 軸的子圖,並且該子圖還與第一個子圖共享其軸。xlim() 方法設定 x 軸值的限制,這就像我們可以傳遞它的範圍。

axis3 = plt.subplot(313, sharex=axis1, sharex=axis1)
plt.plot(range_samples, sine2)
plt.xlim(0.01, 5.0)

完整原始碼:

import matplotlib.pyplot as plt
import numpy as np

range_samples = np.arange(0.01, 5.0, 0.01)
sine = np.sin(2 * np.pi * range_samples)
inverse = np.exp(-range_samples)
sine2 = np.sin(4 * np.pi * range_samples)

axis1 = plt.subplot(311)
plt.plot(range_samples, sine)
plt.tick_params("x", labelsize=6)

# This line only share x
axis2 = plt.subplot(312, sharex=axis1)
plt.plot(range_samples, inverse)
# make these tick labels invisible
plt.tick_params("x", labelbottom=False)

# This lin share x and y axes
axis3 = plt.subplot(313, sharex=axis1, sharey=axis1)
plt.plot(range_samples, sine2)
plt.xlim(0.01, 5.0)
plt.show()

輸出:

使用 sharex 引數共享來自多個子圖的軸

執行程式碼

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

相關文章 - Matplotlib Axis