天天看點

python使用matplotlib:subplot繪制多個子圖1 問題描述2 subplot函數介紹3 示例程式

CSDN GitHub
python使用matplotlib:subplot繪制多個子圖

AderXCoding/language/python/matplotlib/subplot

python使用matplotlib:subplot繪制多個子圖1 問題描述2 subplot函數介紹3 示例程式

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協定進行許可, 轉載請注明出處

1 問題描述

matploglib

能夠繪制出精美的圖表, 有些時候, 我們希望把一組圖放在一起進行比較, 有沒有什麼好的方法呢?

matplotlib

中提供的

subplot

可以很好的解決這個問題

2 subplot函數介紹

matplotlib

下, 一個

Figure

對象可以包含多個子圖(

Axes

), 可以使用

subplot()

快速繪制, 其調用形式如下 :

subplot(numRows, numCols, plotNum)
           
  • 圖表的整個繪圖區域被分成

    numRows

    行和

    numCols

  • 然後按照從左到右,從上到下的順序對每個子區域進行編号,左上的子區域的編号為1
  • plotNum

    參數指定建立的

    Axes

    對象所在的區域

如果

numRows = 2, numCols = 3

, 那整個繪制圖表樣式為

2X3

的圖檔區域, 用坐标表示為

(, ), (, ), (, )
(, ), (, ), (, )
           

這時, 當

plotNum = 3

時, 表示的坐标為(1, 3), 即第一行第三列的子圖

  • 如果

    numRows

    ,

    numCols

    plotNum

    這三個數都小于

    10

    的話, 可以把它們縮寫為一個整數, 例如

    subplot(323)

    subplot(3,2,3)

    是相同的.
  • subplot

    plotNum

    指定的區域中建立一個軸對象. 如果新建立的軸和之前建立的軸重疊的話,之前的軸将被删除.

3 示例程式

3.1 規則劃分成3*3的

#!/usr/bin/env python
#!encoding=utf-8

import matplotlib
import matplotlib.pyplot as plt

if __name__ == '__main__':
    for i,color in enumerate("rgby"):
        plt.subplot(+i, axisbg=color)

    plt.show()
           
python使用matplotlib:subplot繪制多個子圖1 問題描述2 subplot函數介紹3 示例程式

3.2 不規則劃分

但是有時候我們的劃分并不是規則的, 比如如下的形式

python使用matplotlib:subplot繪制多個子圖1 問題描述2 subplot函數介紹3 示例程式

這種應該怎麼劃分呢?

将整個表按照

2*2

劃分

前兩個簡單, 分别是

(2, 2, 1)

(2, 2, 2)

但是第三個圖呢, 他占用了

(2, 2, 3)

(2, 2, 4)

顯示需要對其重新劃分, 按照

2 * 1

劃分

前兩個圖占用了

(2, 1, 1)

的位置

是以第三個圖占用了

(2, 1, 2)

的位置

python使用matplotlib:subplot繪制多個子圖1 問題描述2 subplot函數介紹3 示例程式

代碼如下, 參照matplotlib繪制多個子圖——subplot

#!/usr/bin/env python
#!encoding=utf-8

import matplotlib.pyplot as plt
import numpy as np



def f(t):
    return np.exp(-t) * np.cos( * np.pi * t)

if __name__ == '__main__' :
    t1 = np.arange(, , )
    t2 = np.arange(, , )

    plt.figure()
    plt.subplot()
    plt.plot(t1, f(t1), 'bo', t2, f(t2), 'r--')

    plt.subplot()
    plt.plot(t2, np.cos( * np.pi * t2), 'r--')

    plt.subplot()
    plt.plot([, , , ], [, , , ])

    plt.show()
           
python使用matplotlib:subplot繪制多個子圖1 問題描述2 subplot函數介紹3 示例程式

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協定進行許可