matplotlib之pyplot模塊實現添加子圖subplot的使用
概述
subplot()
函數向當前圖像(figure
)添加一個子圖(Axes
),並將該子圖設為當前子圖。或者將某子圖設為當前子圖。
pyplot.subplot()
其實是Figure.add_subplot()
的一個封裝。
函數的定義簽名為:matplotlib.pyplot.subplot(*args, **kwargs)
函數的調用簽名為:
subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)
函數的參數為:
*args
:定義子圖的位置。int
、 (int, int, index)
或 SubplotSpec
, 默認值為(1, 1, 1)
*args
由以下三種定義方式。
- 三個整數構成的三元組
(nrows, ncols, index)
:首先構成一個nrows行和ncols列的網格,然後將子圖添加到對應index索引位置。 index從1開始累計,1為左上角,依次向右遞增. index也可以是是一個二元組,例如fig.add_subplot(3, 1, (1, 2))。 - 三位整數:每一位數字可以分解為單獨的整數,因此,這種方法最好用於子圖少於9個的情況(index最大隻能為9)。比如plt.subplot(235)等價於plt.subplot(2, 3, 5)。
SubplotSpec
對象:
函數的返回值為:axes.SubplotBase
對象或 Axes
的其他子類。
案例:規則佈局
import matplotlib.pyplot as plt # 添加3行3列子圖中的第1個子圖,並將其為當前子圖 plt.subplot(331) plt.bar(range(1,4),range(1,4)) # 添加3行3列子圖中的第5個子圖,並將其為當前子圖 plt.subplot(335) plt.pie([4,5,6]) # 添加3行3列子圖中的第9個子圖,並將其為當前子圖 # 返回值為Axes對象 ax=plt.subplot(339) # 使用Axes的方法(面向對象模式)繪制點 ax.plot([1],'o') plt.show()
pyplot.plot()
源碼如下,通過源碼可知pyplot
模塊的函數底層調用的是Axes
對象的對應方法。
def plot(*args, scalex=True, scaley=True, data=None, **kwargs): return gca().plot( *args, scalex=scalex, scaley=scaley, **({"data": data} if data is not None else {}), **kwargs)
不規則佈局
通常子區函數subplot()
用來完成等分畫佈的繪圖展示的任務,如果在畫佈上需要進行非等分畫佈的圖形展示時,我們可以多次調用函數subplot()
來完成非等分畫佈的繪圖準備任務。
import matplotlib.pyplot as plt # 繪制1行2列子圖中的第1個子圖 plt.subplot(121,facecolor='r') # 繪制2行2列子圖中的第2個子圖 plt.subplot(222,facecolor='g') # 繪制2行2列子圖中的第4個子圖 plt.subplot(224,facecolor='b') plt.show()
import matplotlib.pyplot as plt # 繪制3行2列子圖中的第1個子圖 plt.subplot(321,facecolor='r') # 繪制3行2列子圖中的第2個子圖 plt.subplot(322,facecolor='r') # 繪制3行2列子圖中的第3個子圖 plt.subplot(323,facecolor='r') # 繪制3行2列子圖中的第4個子圖 plt.subplot(324,facecolor='r') # # 繪制3行1列子圖中的第3個子圖 plt.subplot(313,facecolor='b') plt.show()
subplot()
函數有一個非常重要的特性:
在創建新的子圖時,如果新建子圖與原有的子圖存在重疊的情況,那麼會刪除原有重疊的子圖。
例如:
import matplotlib.pyplot as plt # 繪圖時隱含創建subplot(111) plt.plot([1, 2, 3]) # 創建一個新的子圖,由於與原子圖重疊,因此刪除原有子圖 plt.subplot(211) plt.show()
到此這篇關於matplotlib之pyplot模塊實現添加子圖subplot的使用的文章就介紹到這瞭,更多相關matplotlib 添加子圖內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- matplotlib 向任意位置添加一個子圖(axes)
- python數字圖像處理圖像的繪制詳解
- 手把手教你用Matplotlib實現數據可視化
- Python+matplotlib繪制多子圖的方法詳解
- 利用python繪制線型圖