更新時間:2022-04-07 來源:黑馬程序員 瀏覽量:
使用pyplot的subplot2grid()函數(shù)可以將整個畫布規(guī)劃成非等分布局的區(qū)域,并可在選中的某個區(qū)域中繪制單個子圖,subplot2grid()函數(shù)的語法格式如下:
subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)
該函數(shù)常用參數(shù)的含義如下。
·shape:表示規(guī)劃的區(qū)域結(jié)構(gòu),它是一個包含兩個整型數(shù)據(jù)的元組,其中第1個元素表示規(guī)劃區(qū)域的行數(shù),第2個元素表示規(guī)劃區(qū)域的列數(shù)。
·loc:表示選擇區(qū)域的位置,它是一個包含兩個整型數(shù)據(jù)的元組,其中第1個元素表示子圖所在的行數(shù)(行數(shù)從0開始),第2個元素表示子圖所在的列數(shù)(列數(shù)從0開始)。
·rowspan:表示向下跨越的行數(shù),默認為1。
·colspan:表示向右跨越的列數(shù),默認為1。
·fig:表示放置子圖的畫布,默認為當前畫布。
例如,將畫布規(guī)劃成2x3的矩陣區(qū)域,并在第0行第2列的區(qū)域中繪制子圖;再次將畫布規(guī)劃成2x3的矩陣區(qū)域,并在第1行第1~2列的區(qū)域中繪制子圖,代碼如下:
import matplotlib.pyplot as plt # 畫布被規(guī)劃成2x3的矩陣區(qū)域,之后在第0行第2列的區(qū)域中繪制子圖 axl = plt.subplot2grid((2, 3), (0, 2)) axl.plot([1, 2, 3, 4, 5]) # 畫布被規(guī)劃成2x3的矩陣區(qū)域,之后在第1行第1~2列的區(qū)域中繪制子圖 ax2 = plt.subplot2grid((2, 3), (1, 1), colspan=2) ax2.plot([1, 2, 3, 4, 5]) plt.show()
運行程序,效果如圖5-9所示。
圖5-9 非等分布局的子圖
圖5-9中包含兩個大小不同的圖表。由圖5-9可知,第1個圖表位于畫布的右下方,圖表的寬度占畫布寬度的三分之一,高度占畫布高度的二分之一;第2個圖表位于畫布的右下方,圖表的寬度占畫布的三分之二,高度占畫布高度的二分之一。