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!

推薦閱讀: