【Python】【Matplotlib】fig, ax = plt.subplots() 返回的fig和ax是什么?
?? 個(gè)人主頁:高斯小哥
?? 高質(zhì)量專欄:Matplotlib之旅:零基礎(chǔ)精通數(shù)據(jù)可視化、Python基礎(chǔ)【高質(zhì)量合集】、PyTorch零基礎(chǔ)入門教程?? 希望得到您的訂閱和支持~
?? 創(chuàng)作高質(zhì)量博文(平均質(zhì)量分92+),分享更多關(guān)于深度學(xué)習(xí)、PyTorch、Python領(lǐng)域的優(yōu)質(zhì)內(nèi)容?。ㄏM玫侥年P(guān)注~)
?? 一、fig和ax簡介
??在Matplotlib庫中,fig, ax = plt.subplots()
是一個(gè)常用的函數(shù),用于創(chuàng)建一個(gè)新的圖形窗口以及一個(gè)或多個(gè)子圖。返回的 fig
和 ax
對(duì)象分別代表了整個(gè)圖形和其中的一個(gè)子圖。fig
是 Figure
類的實(shí)例,代表整個(gè)繪圖窗口,而 ax
是 Axes
類的實(shí)例,代表其中的一個(gè)子圖或坐標(biāo)軸。
??通過 fig
和 ax
,我們可以方便地對(duì)整個(gè)圖形和子圖進(jìn)行各種操作,比如設(shè)置標(biāo)題、坐標(biāo)軸標(biāo)簽、刻度等。
??? 二、fig的用法
fig
對(duì)象提供了許多方法和屬性,用于控制整個(gè)圖形的外觀和行為。以下是一些常用的用法:
設(shè)置圖形大小
可以通過 figsize
參數(shù)在創(chuàng)建圖形時(shí)設(shè)置其大?。▽捄透?,單位為英寸)。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 6))
設(shè)置圖形標(biāo)題
使用 suptitle()
方法可以為整個(gè)圖形設(shè)置標(biāo)題。
fig.suptitle('My Title', fontsize=14)
保存圖形
使用 savefig()
方法可以將整個(gè)圖形保存為圖片文件。
fig.savefig('my_figure.png')
顯示圖形
通過 plt.show()
可以顯示整個(gè)圖形。
plt.show()
?? 三、ax的用法
ax
對(duì)象代表了圖形中的一個(gè)子圖,它提供了豐富的接口用于繪制圖形和設(shè)置坐標(biāo)軸屬性。
繪制圖形
使用 ax
對(duì)象的方法可以直接在子圖上繪制各種圖形,如折線圖、散點(diǎn)圖等。
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
設(shè)置坐標(biāo)軸標(biāo)簽和刻度
使用 set_xlabel()
, set_ylabel()
, set_xticks()
, set_yticks()
等方法可以設(shè)置坐標(biāo)軸的標(biāo)簽和刻度。
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_xticks(np.arange(0, 11, 2))
ax.set_yticks([-1, 0, 1])
設(shè)置坐標(biāo)軸范圍
使用 set_xlim()
和 set_ylim()
方法可以設(shè)置坐標(biāo)軸的范圍。
ax.set_xlim(0, 10)
ax.set_ylim(-1.5, 1.5)
添加圖例
如果在一個(gè)子圖上繪制了多個(gè)圖形,可以使用 legend()
方法添加圖例。
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')
ax.legend()
完整代碼
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_xticks(np.arange(0, 11, 2))
ax.set_yticks([-1, 0, 1])
ax.set_xlim(0, 10)
ax.set_ylim(-1.5, 1.5)
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')
ax.legend()
plt.show()
?? 四、多個(gè)子圖
??plt.subplots()
函數(shù)還可以用于創(chuàng)建包含多個(gè)子圖的圖形。通過指定 nrows
和 ncols
參數(shù),可以定義子圖的行數(shù)和列數(shù)。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
fig, axs = plt.subplots(nrows=2, ncols=2)
# axs 是一個(gè) 2x2 的數(shù)組,每個(gè)元素都是一個(gè) Axes 對(duì)象
axs[0, 0].plot(x, np.sin(x))
axs[0, 1].plot(x, np.cos(x))
axs[1, 0].plot(x, np.tan(x))
axs[1, 1].plot(x, 1/x)
plt.show()
在這個(gè)例子中,axs
是一個(gè) 2x2 的 NumPy 數(shù)組,每個(gè)元素都是一個(gè) Axes
對(duì)象,代表圖形中的一個(gè)子圖。我們可以通過索引 axs[i, j]
來訪問和操作特定的子圖。
?? 五、fig和ax的交互
??fig
和 ax
對(duì)象之間也有一些交互。例如,我們可以通過 fig.add_axes()
方法手動(dòng)向圖形中添加一個(gè) Axes
對(duì)象,或者通過 ax.figure
屬性獲取一個(gè) Axes
對(duì)象所屬的 Figure
對(duì)象。
下面,我們將深入探討 fig
和 ax
之間的交互,并通過示例代碼展示如何使用它們來創(chuàng)建更復(fù)雜的圖形布局和交互。
使用 fig.add_axes() 添加 Axes 對(duì)象
??雖然 plt.subplots()
是一種非常方便的創(chuàng)建子圖的方法,但有時(shí)我們可能需要更靈活地控制子圖的位置和大小。這時(shí),可以使用 fig.add_axes()
方法來手動(dòng)添加 Axes
對(duì)象。
import matplotlib.pyplot as plt
# 創(chuàng)建一個(gè)圖形對(duì)象
fig = plt.figure()
# 使用 add_axes() 方法添加 Axes 對(duì)象
# 參數(shù)是一個(gè)四元組,表示子圖在圖形中的位置(左下角 x, 左下角 y, 寬度, 高度)
# 這些值都是相對(duì)于圖形大小的分?jǐn)?shù)
ax1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])
# 在第一個(gè) Axes 對(duì)象上繪制圖形
ax1.plot([1, 2, 3, 4], [1, 4, 2, 3])
# 還可以繼續(xù)添加更多的 Axes 對(duì)象
ax2 = fig.add_axes([0.2, 0.5, 0.4, 0.3])
ax2.plot([1, 2, 3, 4], [4, 3, 2, 1])
# 顯示圖形
plt.show()
在上面的代碼中,我們手動(dòng)指定了每個(gè) Axes
對(duì)象在圖形中的位置和大小。這種方法比 plt.subplots()
更底層,因此提供了更大的靈活性。
使用 ax.figure 獲取所屬的 Figure 對(duì)象
??每個(gè) Axes
對(duì)象都有一個(gè) figure
屬性,它指向該 Axes
對(duì)象所屬的 Figure
對(duì)象。通過這個(gè)屬性,我們可以訪問和操作整個(gè)圖形。
import matplotlib.pyplot as plt
# 創(chuàng)建一個(gè)圖形和一個(gè) Axes 對(duì)象
fig, ax = plt.subplots()
# 使用 ax.figure 訪問所屬的 Figure 對(duì)象
print(ax.figure is fig) # 輸出: True
# 也可以通過 ax.figure 來操作整個(gè)圖形
ax.figure.suptitle('My Title')
# 顯示圖形
plt.show()
在這個(gè)例子中,我們驗(yàn)證了 ax.figure
是否與通過 plt.subplots()
返回的 fig
對(duì)象相同,并展示了如何使用 ax.figure
來設(shè)置整個(gè)圖形的標(biāo)題。
共享坐標(biāo)軸
??有時(shí),我們可能希望多個(gè)子圖共享一個(gè)或多個(gè)坐標(biāo)軸。Matplotlib 提供了 sharex
和 sharey
參數(shù)來實(shí)現(xiàn)這一功能。
import matplotlib.pyplot as plt
# 創(chuàng)建兩個(gè)子圖,并共享 x 軸
fig, axs = plt.subplots(nrows=2, sharex=True)
axs[0].plot([1, 2, 3], [1, 2, 3])
axs[1].plot([1, 2, 3], [3, 2, 1])
# 顯示圖形
plt.show()
在這個(gè)例子中,兩個(gè)子圖共享了 x 軸,因此它們的 x 軸刻度和標(biāo)簽是相同的。
??通過了解 fig
和 ax
之間的交互,我們可以更靈活地控制圖形的布局和外觀,從而創(chuàng)建出更具吸引力的可視化效果。無論是通過 plt.subplots()
創(chuàng)建子圖,還是手動(dòng)使用 fig.add_axes()
添加子圖,我們都能夠充分利用 Matplotlib 的強(qiáng)大功能來創(chuàng)建出符合我們需求的圖形。
?? 六、fig和ax的進(jìn)一步定制
??除了基本的繪圖和坐標(biāo)軸設(shè)置,fig
和 ax
還提供了許多高級(jí)功能,允許我們對(duì)圖形進(jìn)行更深入的定制。
自定義顏色、線條樣式和標(biāo)記
在繪制圖形時(shí),我們可以自定義線條的顏色、樣式(實(shí)線、虛線等)以及數(shù)據(jù)點(diǎn)的標(biāo)記樣式。
ax.plot(x, y, color='red', linestyle='--', marker='o')
添加網(wǎng)格、邊框和背景色
通過 grid()
, spines
屬性以及 patch
對(duì)象,我們可以為圖形添加網(wǎng)格線、控制邊框的顯示以及設(shè)置背景色。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.grid(True) # 顯示網(wǎng)格線
ax.spines['top'].set_visible(False) # 隱藏上邊框
ax.spines['right'].set_visible(False) # 隱藏右邊框
fig.patch.set_facecolor('lightgrey') # 設(shè)置背景色為淺灰色
# 顯示圖形
plt.show()
??七、期待與你共同進(jìn)步
???? 親愛的讀者,非常感謝你每一次的停留和閱讀!你的支持是我們前行的最大動(dòng)力!??
???? 在這茫茫網(wǎng)海中,有你的關(guān)注,我們深感榮幸。你的每一次點(diǎn)贊??、收藏??、評(píng)論??和關(guān)注??,都像是明燈一樣照亮我們前行的道路,給予我們無比的鼓舞和力量。??
???? 我們會(huì)繼續(xù)努力,為你呈現(xiàn)更多精彩和有深度的內(nèi)容。同時(shí),我們非常歡迎你在評(píng)論區(qū)留下你的寶貴意見和建議,讓我們共同進(jìn)步,共同成長!??
???? 無論你在編程的道路上遇到什么困難,都希望你能堅(jiān)持下去,因?yàn)槊恳淮蔚拇煺鄱际峭ㄍ晒Φ谋亟?jīng)之路。我們期待與你一起書寫編程的精彩篇章! ??
???? 最后,再次感謝你的厚愛與支持!愿你在編程的道路上越走越遠(yuǎn),收獲滿滿的成就和喜悅!祝你編程愉快!??
?? 結(jié)語
??通過本博客的學(xué)習(xí),你應(yīng)該已經(jīng)對(duì) fig
和 ax
的用法有了更深入的了解。Matplotlib 是一個(gè)強(qiáng)大而靈活的繪圖庫,掌握其基本用法和高級(jí)定制技巧將為你的數(shù)據(jù)分析和可視化工作帶來極大的便利。不斷學(xué)習(xí)和實(shí)踐,你將能夠創(chuàng)建出更加精美和有效的數(shù)據(jù)可視化作品。感謝閱讀,祝你學(xué)習(xí)愉快,收獲滿滿!??文章來源:http://www.zghlxwxcb.cn/news/detail-840220.html
?? 關(guān)鍵詞
??Matplotlib, fig, ax, subplots, 數(shù)據(jù)可視化, 圖形定制, 坐標(biāo)軸設(shè)置, 文本注釋, 箭頭, 共享坐標(biāo)軸, 學(xué)習(xí)資源, 擴(kuò)展閱讀文章來源地址http://www.zghlxwxcb.cn/news/detail-840220.html
到了這里,關(guān)于【Python】【Matplotlib】fig, ax = plt.subplots() 返回的fig和ax是什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!