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

大數(shù)據(jù)Python培訓(xùn):緊密布局的應(yīng)用

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

  matplotlib中緊密布局與約束布局相似,它采用緊湊的形式將子圖排列到畫布中,僅適用于刻度標(biāo)簽、坐標(biāo)軸標(biāo)簽和標(biāo)題位置的調(diào)整。

  pyplot中提供了兩種實現(xiàn)緊密布局的方式:第一種方式是調(diào)用tight_layout()函數(shù);第二種方式是修改figure.autolayoutrcParam配置項。關(guān)于緊密布局的兩種實現(xiàn)方式的介紹如下。

  (1)調(diào)用tight_layout()函數(shù)

  matplotlib在1.1版本中引入了tight_layout()函數(shù),通過該函數(shù)調(diào)整子圖的內(nèi)邊距及子圖的間隙,使子圖能適應(yīng)畫布的繪圖區(qū)域。tight_layout()函數(shù)的語法格式如下:

tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None)

  該函數(shù)的參數(shù)含義如下。

  .pad:表示畫布邊緣與子圖邊緣之間的空白區(qū)域的大小,默認(rèn)為1.08。

  .h_pad, w_pad:表示相鄰子圖之間的空白區(qū)域的大小。

  .rect:表示調(diào)整所有子圖位置的矩形區(qū)域的四元組(left,bottom,right,top),默認(rèn)為(0,0,1,1)。

  需要注意的是,當(dāng)pad參數(shù)設(shè)為0時,空白區(qū)域的文本會出現(xiàn)被裁剪的現(xiàn)象,之所以出現(xiàn)文本部分缺失的情況,可能是因為算法錯誤或受到算法的限制。因此,官方建議pad參數(shù)的取值應(yīng)至少大于0.3。

  (2)修改figure.autolayoutrcparam配置項

  pyplot可以通過rcParams字典或rc()函數(shù)修改figure.autolayoutParam配置項的值為True,使子圖元素適應(yīng)畫布,示例代碼如下:

plt.rcParams['figure.autolayoutrcParam'] = True

  例如,使用subplots()函數(shù)繪制2行2列的帶有坐標(biāo)軸標(biāo)簽的子圖,并通過tight_layout()函數(shù)解決子圖之間的標(biāo)簽重疊問題,代碼如下。

import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2)
ax_one = axs[0, 0]
ax_one.set_title('Title')
ax_two = axs[0, 1]
ax_two.set_title('Title')
ax_thr = axs[1, 0]
ax_thr.set_title('Title')
# 調(diào)整子圖之間的距離
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=2)
plt.show()

  緊密布局調(diào)整前與調(diào)整后的效果如圖5-16所示。

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

  圖5-16 緊密布局調(diào)整前與調(diào)整后的效果

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