更新時間:2022-04-12 來源:黑馬程序員 瀏覽量:
matplotlib中緊密布局與約束布局相似,它采用緊湊的形式將子圖排列到畫布中,僅適用于刻度標簽、坐標軸標簽和標題位置的調整。
pyplot中提供了兩種實現(xiàn)緊密布局的方式:第一種方式是調用tight_layout()函數(shù);第二種方式是修改figure.autolayoutrcParam配置項。關于緊密布局的兩種實現(xiàn)方式的介紹如下。
(1)調用tight_layout()函數(shù)
matplotlib在1.1版本中引入了tight_layout()函數(shù),通過該函數(shù)調整子圖的內邊距及子圖的間隙,使子圖能適應畫布的繪圖區(qū)域。tight_layout()函數(shù)的語法格式如下:
tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None)
該函數(shù)的參數(shù)含義如下。
.pad:表示畫布邊緣與子圖邊緣之間的空白區(qū)域的大小,默認為1.08。
.h_pad, w_pad:表示相鄰子圖之間的空白區(qū)域的大小。
.rect:表示調整所有子圖位置的矩形區(qū)域的四元組(left,bottom,right,top),默認為(0,0,1,1)。
需要注意的是,當pad參數(shù)設為0時,空白區(qū)域的文本會出現(xiàn)被裁剪的現(xiàn)象,之所以出現(xiàn)文本部分缺失的情況,可能是因為算法錯誤或受到算法的限制。因此,官方建議pad參數(shù)的取值應至少大于0.3。
(2)修改figure.autolayoutrcparam配置項
pyplot可以通過rcParams字典或rc()函數(shù)修改figure.autolayoutParam配置項的值為True,使子圖元素適應畫布,示例代碼如下:
plt.rcParams['figure.autolayoutrcParam'] = True
例如,使用subplots()函數(shù)繪制2行2列的帶有坐標軸標簽的子圖,并通過tight_layout()函數(shù)解決子圖之間的標簽重疊問題,代碼如下。
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') # 調整子圖之間的距離 plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=2) plt.show()
緊密布局調整前與調整后的效果如圖5-16所示。
圖5-16 緊密布局調整前與調整后的效果