Python3 matplotlib的绘图函数subplot()简介
Python3 matplotlib的繪圖函數(shù)subplot()簡(jiǎn)介
一、簡(jiǎn)介
matplotlib下, 一個(gè)?Figure?對(duì)象可以包含多個(gè)子圖(Axes), 可以使用?subplot()?快速繪制, 其調(diào)用形式如下 :
subplot(numRows, numCols, plotNum)-
圖表的整個(gè)繪圖區(qū)域被分成?numRows?行和?numCols?列
-
然后按照從左到右,從上到下的順序?qū)γ總€(gè)子區(qū)域進(jìn)行編號(hào),左上的子區(qū)域的編號(hào)為1
-
plotNum?參數(shù)指定創(chuàng)建的?Axes?對(duì)象所在的區(qū)域
如果?numRows = 2, numCols = 3, 那整個(gè)繪制圖表樣式為?2X3?的圖片區(qū)域, 用坐標(biāo)表示為:
(1, 1), (1, 2), (1, 3) (2, 1), (2, 2), (2, 3)這時(shí), 當(dāng)?plotNum = 3?時(shí), 表示的坐標(biāo)為(1, 3), 即第一行第三列的子圖
-
如果?numRows,?numCols?和?plotNum?這三個(gè)數(shù)都小于?10?的話, 可以把它們縮寫(xiě)為一個(gè)整數(shù), 例如?subplot(323)?和?subplot(3,2,3)?是相同的.
-
subplot在?plotNum?指定的區(qū)域中創(chuàng)建一個(gè)軸對(duì)象. 如果新創(chuàng)建的軸和之前創(chuàng)建的軸重疊的話,之前的軸將被刪除.
二、參數(shù)說(shuō)明
1,subplots()參數(shù)
matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)創(chuàng)建一個(gè)畫(huà)像(figure)和一組子圖(subplots)。
這個(gè)實(shí)用程序包裝器可以方便地在單個(gè)調(diào)用中創(chuàng)建子圖的公共布局,包括封閉的圖形對(duì)象。
輸入?yún)?shù)說(shuō)明:
nrows,ncols:整型,可選參數(shù),默認(rèn)為1。表示子圖網(wǎng)格(grid)的行數(shù)與列數(shù)。
sharex,sharey:布爾值或者{'none','all','row','col'},默認(rèn):False
? ? ? ?控制x(sharex)或y(sharey)軸之間的屬性共享:
? ? ? ? 1.True或者'all':x或y軸屬性將在所有子圖(subplots)中共享.
? ? ? ? 2.False或'none':每個(gè)子圖的x或y軸都是獨(dú)立的部分
? ? ? ? ? ? 3.'row':每個(gè)子圖在一個(gè)x或y軸共享行(row)
? ? ? ? ? ? ? ? 4.'col':每個(gè)子圖在一個(gè)x或y軸共享列(column)
當(dāng)子圖在x軸有一個(gè)共享列時(shí)('col'),只有底部子圖的x tick標(biāo)記是可視的。
同理,當(dāng)子圖在y軸有一個(gè)共享行時(shí)('row'),只有第一列子圖的y tick標(biāo)記是可視的。
squeeze:布爾類(lèi)型,可選參數(shù),默認(rèn):True。
? ? ? ? ? ? ? ? * 如果是True,額外的維度從返回的Axes(軸)對(duì)象中擠出。
? ? ? ? ? ? ? ? ? ? 》如果只有一個(gè)子圖被構(gòu)建(nrows=ncols=1),結(jié)果是單個(gè)Axes對(duì)象作為標(biāo)量被返回。
? ? ? ? ? ? ? ? ? ? 》對(duì)于N*1或1*N個(gè)子圖,返回一個(gè)1維數(shù)組。
? ? ? ? ? ? ? ? ? ? 》對(duì)于N*M,N>1和M>1返回一個(gè)2維數(shù)組。
? ? ? ? ? ? ? ? *如果是False,不進(jìn)行擠壓操作:返回一個(gè)元素為Axes實(shí)例的2維數(shù)組,即使它最終是1x1。
subplot_kw:字典類(lèi)型,可選參數(shù)。把字典的關(guān)鍵字傳遞給add_subplot()來(lái)創(chuàng)建每個(gè)子圖。
gridspec_kw字典類(lèi)型,可選參數(shù)。把字典的關(guān)鍵字傳遞給GridSpec構(gòu)造函數(shù)創(chuàng)建子圖放在網(wǎng)格里(grid)。
**fig_kw:把所有詳細(xì)的關(guān)鍵字參數(shù)傳給figure()函數(shù)
返回結(jié)果:
fig:matplotlib.figure.Figure對(duì)象
ax:Axes(軸)對(duì)象或Axes(軸)對(duì)象數(shù)組。
2,figure()參數(shù)
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)創(chuàng)建一個(gè)新的畫(huà)布(figure)。
輸入?yún)?shù):
num:整型或者字符串,可選參數(shù),默認(rèn):None。
? ? 如果不提供該參數(shù),一個(gè)新的畫(huà)布(figure)將被創(chuàng)建而且畫(huà)布數(shù)量將會(huì)增加。
? ? ? ? 如果提供該參數(shù),帶有id的畫(huà)布是已經(jīng)存在的,激活該畫(huà)布并返回該畫(huà)布的引用。
? ? ? ? ? ? ? ?如果這個(gè)畫(huà)布不存在,創(chuàng)建并返回畫(huà)布實(shí)例。
? ? ? ? ? ? ? ?如果num是字符串,窗口標(biāo)題將被設(shè)置為該圖的數(shù)字。
figsize:整型元組,可選參數(shù) ,默認(rèn):None。
? ? ? ? ? ? ? 每英寸的寬度和高度。如果不提供,默認(rèn)值是figure.figsize。
dpi:整型,可選參數(shù),默認(rèn):None。每英寸像素點(diǎn)。如果不提供,默認(rèn)是figure.dpi。
facecolor:背景色。如果不提供,默認(rèn)值:figure.facecolor。
edgecolor:邊界顏色。如果不提供,默認(rèn)值:figure.edgecolor。
framemon:布爾類(lèi)型,可選參數(shù),默認(rèn)值:True。如果是False,禁止繪制畫(huà)圖框。
FigureClass:源于matplotlib.figure.Figure的類(lèi)。(可選)使用自定義圖實(shí)例。
clear:布爾類(lèi)型,可選參數(shù),默認(rèn)值:False。如果為T(mén)rue和figure已經(jīng)存在時(shí),這是清理掉改圖。
返回值:
figure:Figure。返回的Figure實(shí)例也將被傳遞給后端的new_figure_manager,這允許將自定義的圖類(lèi)掛接到pylab接口中。?
? ? ? ?附加的kwarg將被傳遞給圖形init函數(shù)。
三、示例
1,規(guī)則劃分成3*3
代碼:
import matplotlib import matplotlib.pyplot as pltif __name__ == '__main__':for i,color in enumerate("rgby"):plt.subplot(221+i, facecolor=color) #背景色設(shè)置facecolorplt.show()效果:
2,不規(guī)則劃分
不規(guī)則劃分
將整個(gè)表按照?2*2?劃分?
前兩個(gè)簡(jiǎn)單, 分別是?(2, 2, 1)?和?(2, 2, 2)
但是第三個(gè)圖呢, 他占用了?(2, 2, 3)?和?(2, 2, 4)
顯示需要對(duì)其重新劃分, 按照?2 * 1?劃分
前兩個(gè)圖占用了?(2, 1, 1)?的位置
因此第三個(gè)圖占用了?(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()效果:
?
轉(zhuǎn)載于:https://www.cnblogs.com/lizm166/p/9667923.html
總結(jié)
以上是生活随笔為你收集整理的Python3 matplotlib的绘图函数subplot()简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: QT 子窗体 最大化 界面显示不对
- 下一篇: python2 pip安装包等出现各种编