Python3 matplotlib的绘图函数subplot()简介
Python3 matplotlib的繪圖函數subplot()簡介
一、簡介
matplotlib下, 一個?Figure?對象可以包含多個子圖(Axes), 可以使用?subplot()?快速繪制, 其調用形式如下 :
subplot(numRows, numCols, plotNum)-
圖表的整個繪圖區域被分成?numRows?行和?numCols?列
-
然后按照從左到右,從上到下的順序對每個子區域進行編號,左上的子區域的編號為1
-
plotNum?參數指定創建的?Axes?對象所在的區域
如果?numRows = 2, numCols = 3, 那整個繪制圖表樣式為?2X3?的圖片區域, 用坐標表示為:
(1, 1), (1, 2), (1, 3) (2, 1), (2, 2), (2, 3)這時, 當?plotNum = 3?時, 表示的坐標為(1, 3), 即第一行第三列的子圖
-
如果?numRows,?numCols?和?plotNum?這三個數都小于?10?的話, 可以把它們縮寫為一個整數, 例如?subplot(323)?和?subplot(3,2,3)?是相同的.
-
subplot在?plotNum?指定的區域中創建一個軸對象. 如果新創建的軸和之前創建的軸重疊的話,之前的軸將被刪除.
二、參數說明
1,subplots()參數
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(軸)對象數組。
2,figure()參數
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函數。
三、示例
1,規則劃分成3*3
代碼:
import matplotlib import matplotlib.pyplot as pltif __name__ == '__main__':for i,color in enumerate("rgby"):plt.subplot(221+i, facecolor=color) #背景色設置facecolorplt.show()效果:
2,不規則劃分
不規則劃分
將整個表按照?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 npdef 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()效果:
?
轉載于:https://www.cnblogs.com/lizm166/p/9667923.html
總結
以上是生活随笔為你收集整理的Python3 matplotlib的绘图函数subplot()简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT 子窗体 最大化 界面显示不对
- 下一篇: 华夏银行信用卡自动分期可以修改分期期数吗