matplotlib
下, 一個 Figure
對象能夠包含多個子圖(Axes
), 可使用 subplot()
快速繪製, 其調用形式以下 :後端
subplot(numRows, numCols, plotNum)
圖表的整個繪圖區域被分紅 numRows
行和 numCols
列數組
而後按照從左到右,從上到下的順序對每一個子區域進行編號,左上的子區域的編號爲1函數
plotNum
參數指定建立的 Axes
對象所在的區域佈局
若是 numRows = 2, numCols = 3
, 那整個繪製圖表樣式爲 2X3
的圖片區域, 用座標表示爲:spa
(1, 1), (1, 2), (1, 3)
(2, 1), (2, 2), (2, 3)
這時, 當 plotNum = 3
時, 表示的座標爲(1, 3), 即第一行第三列的子圖code
若是 numRows
, numCols
和 plotNum
這三個數都小於 10
的話, 能夠把它們縮寫爲一個整數, 例如 subplot(323)
和 subplot(3,2,3)
是相同的.對象
subplot
在 plotNum
指定的區域中建立一個軸對象. 若是新建立的軸和以前建立的軸重疊的話,以前的軸將被刪除.blog
matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
建立一個畫像(figure)和一組子圖(subplots)。
這個實用程序包裝器能夠方便地在單個調用中建立子圖的公共佈局,包括封閉的圖形對象。
輸入參數說明:
nrows,ncols:整型,可選參數,默認爲1。表示子圖網格(grid)的行數與列數。
sharex,sharey:布爾值或者{'none','all','row','col'},默認:False
控制x(sharex)或y(sharey)軸之間的屬性共享:
1.True或者'all':x或y軸屬性將在全部子圖(subplots)中共享.
2.False或'none':每一個子圖的x或y軸都是獨立的部分
3.'row':每一個子圖在一個x或y軸共享行(row)
4.'col':每一個子圖在一個x或y軸共享列(column)
當子圖在x軸有一個共享列時('col'),只有底部子圖的x tick標記是可視的。
同理,當子圖在y軸有一個共享行時('row'),只有第一列子圖的y tick標記是可視的。
squeeze:布爾類型,可選參數,默認:True。
* 若是是True,額外的維度從返回的Axes(軸)對象中擠出。
》若是隻有一個子圖被構建(nrows=ncols=1),結果是單個Axes對象做爲標量被返回。
》對於N*1或1*N個子圖,返回一個1維數組。
》對於N*M,N>1和M>1返回一個2維數組。
*若是是False,不進行擠壓操做:返回一個元素爲Axes實例的2維數組,即便它最終是1x1。
subplot_kw:字典類型,可選參數。把字典的關鍵字傳遞給add_subplot()來建立每一個子圖。
gridspec_kw字典類型,可選參數。把字典的關鍵字傳遞給GridSpec構造函數建立子圖放在網格里(grid)。
**fig_kw:把全部詳細的關鍵字參數傳給figure()函數接口
返回結果:
fig:matplotlib.figure.Figure對象
ax:Axes(軸)對象或Axes(軸)對象數組。圖片
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)
建立一個新的畫布(figure)。
輸入參數:
num:整型或者字符串,可選參數,默認:None。
若是不提供該參數,一個新的畫布(figure)將被建立並且畫布數量將會增長。
若是提供該參數,帶有id的畫布是已經存在的,激活該畫布並返回該畫布的引用。
若是這個畫布不存在,建立並返回畫布實例。
若是num是字符串,窗口標題將被設置爲該圖的數字。
figsize:整型元組,可選參數 ,默認:None。
每英寸的寬度和高度。若是不提供,默認值是figure.figsize。
dpi:整型,可選參數,默認:None。每英寸像素點。若是不提供,默認是figure.dpi。
facecolor:背景色。若是不提供,默認值:figure.facecolor。
edgecolor:邊界顏色。若是不提供,默認值:figure.edgecolor。
framemon:布爾類型,可選參數,默認值:True。若是是False,禁止繪製畫圖框。
FigureClass:源於matplotlib.figure.Figure的類。(可選)使用自定義圖實例。
clear:布爾類型,可選參數,默認值:False。若是爲True和figure已經存在時,這是清理掉改圖。
返回值:
figure:Figure。返回的Figure實例也將被傳遞給後端的new_figure_manager,這容許將自定義的圖類掛接到pylab接口中。
附加的kwarg將被傳遞給圖形init函數。
代碼:
import matplotlib import matplotlib.pyplot as plt if __name__ == '__main__': for i,color in enumerate("rgby"): plt.subplot(221+i, facecolor=color) #背景色設置facecolor plt.show()
效果:
不規則劃分
將整個表按照 2*2
劃分
前兩個簡單, 分別是 (2, 2, 1)
和 (2, 2, 2)
可是第三個圖呢, 他佔用了 (2, 2, 3)
和 (2, 2, 4)
顯示須要對其從新劃分, 按照 2 * 1
劃分
前兩個圖佔用了 (2, 1, 1)
的位置
所以第三個圖佔用了 (2, 1, 2)
的位置
代碼:
import matplotlib.pyplot as plt import numpy as np def f(t): return np.exp(-t) * np.cos(2 * np.pi * t) if __name__ == '__main__' : t1 = np.arange(0, 5, 0.1) t2 = np.arange(0, 5, 0.02) plt.figure(12) plt.subplot(221) plt.plot(t1, f(t1), 'bo', t2, f(t2), 'r--') plt.subplot(222) plt.plot(t2, np.cos(2 * np.pi * t2), 'r--') plt.subplot(212) plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) plt.show()
效果: