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 plt
if __name__ == '__main__':
for i,color in enumerate("rgby"):
plt.subplot(221+i, facecolor=color) #背景色設置facecolor
plt.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 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()
效果:
總結
以上是生活随笔為你收集整理的Python3 matplotlib的绘图函数subplot()简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西门子S7-1200如何查看和设置带参数
- 下一篇: 页面自适应的几种方法