全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

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

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

更新時(shí)間:2022-04-11 來(lái)源:黑馬程序員 瀏覽量:

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

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

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

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

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

plt.subplots(constrained_layout=True)

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

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

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

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

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

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

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

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)整后的效果

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!