首頁技術(shù)文章正文

大數(shù)據(jù)Python培訓:約束布局的使用方法

更新時間:2022-04-11 來源:黑馬程序員 瀏覽量:

  在帶有標題的多個子圖并排顯示時,多個子圖會因區(qū)域過于緊湊而出現(xiàn)標題和坐標軸之間相互重疊的問題,而且子圖元素的擺放過于緊湊,也影響用戶的正常查看。matplotlib中提供了一些調(diào)整子圖布局的方法,包括約束布局、緊密布局和自定義布局,通過這些方法可以合理布局多個子圖。下面將對子圖的局部方法進行詳細介紹。

  約束布局是指通過一些列限制來確定畫布中元素的位置的方式,它預(yù)先會確定一個元素的絕對定位,之后以該元素的位置為基點對其他元素進行絕對定位,從而靈活地調(diào)整元素的位置。

  matplotlib在繪制多子圖時默認并未啟用約束布局,它提供了兩種方式啟用約束布局:第一種方式是使用subplots()或figure()函數(shù)的constrained_layout參數(shù);第二種方式是修改figure.constrained_layout.use配置項。具體內(nèi)容如下。

  (1)使用constrained_layout參數(shù)

  matplotlib使用subplots()或figure()函數(shù)創(chuàng)建子圖或畫布時,可以將constrained_layout參數(shù)的值設(shè)為True,進而調(diào)整子圖元素的布局,示例代碼如下:

plt.subplots(constrained_layout=True)

  (2)修改figure.constrained_layout.use配置項

  matplotlib可以通過rcParams字典或rc()函數(shù)修改figure.constrained_layout.use配置項的值為True,進而調(diào)整子圖元素的布局,示例代碼如下:

plt.rcParams['figure.constrained_layout.use'] = True

  另外,matplotlib還可以修改以下配置項來調(diào)整子圖之間的距離。

  ·figure.constrained_layout.w_pad/h_pad:表示繪圖區(qū)域的內(nèi)邊距,默認為0.04167。

  ·figure.constrained_layout.wspace/hspace:表示子圖之間的空隙。默認為0.02。

  例如,使用subplots()函數(shù)繪制2行2列的帶有坐標軸標簽的子圖,并通過subplots()函數(shù)的constrained_layout參數(shù)啟動約束布局,解決子圖之間標簽重疊的問題,具體代碼如下。

import matplotlib.pyplot as plt
# 繪制子圖并啟用約束布局
fig, axs = plt.subplots(2, 2, constrained_layout=True)
ax_one = axs[0, 0]
ax_one.set_title('Title')
ax_two = axs[0, 1]
ax_two = axs[0, 1]
ax_two.set_title('Title')
ax_thr = axs[1, 0]
ax_thr.set_title('Title')
ax_fou = axs[1, 1]
ax_fou.set_title('Title')
plt.show()

  調(diào)整后的效果如圖5-15所示。

1649645325935_布局調(diào)整后的子圖.jpg

  圖5-15 約束布局調(diào)整前與調(diào)整后的效果

分享到:
在線咨詢 我要報名
和我們在線交談!