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
為 x
和 y
值建立資料,然後我們為 "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)
我們建立了第三個帶有共享 x
和 y
軸的子圖,並且該子圖還與第一個子圖共享其軸。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()
輸出:
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