目錄
繪制固定區域的子圖
(一)、繪制單子圖
subplot()函數
Jupyter Notebook的繪圖模式
(二)、多子圖
subplots()--可以在規劃好的所有區域中一次繪制多個子圖
(三)、跨行跨列
subplot2grid()---將整個畫布規劃成非等分布局的區域,并可在選中的某個區域中繪制單個子圖?
繪制固定區域的子圖
matplotlib可以將整個畫布規劃成等分布局的m*n(行*列)的矩陣區域,并按照先行后列的方式對每個區域進行編號(編號從1開始),之后在選中的某個或某些區域中繪制單個或多個子圖。
(一)、繪制單子圖
subplot()函數
subplot(nrows, ncols, index, projection, polar, sharex, sharey, label,?**kwargs)
nrows:表示規劃區域的行數。
ncols:表示規劃區域的列數。
index:表示選擇區域的索引,默認從1開始編號。
projection:表示子圖的投影類型。
polar:表示是否使用極坐標,默認值為False。
若參數polar設為True,則作用等同于projection='polar'。
參數nrows、ncols、index既支持單獨傳參,也支持以一個3位整數(每位整數必須小于10)的形式傳參。
subplot()函數會返回一個?Axes類的子類SubplotBase的對象。 Figure類對象可以使用add_subplot()方法繪制單子圖,此方式與subplot()函數的作用是等價的。
Jupyter Notebook的繪圖模式
控制臺繪圖
%matplotlib inline
彈出窗繪圖
%matplotlib auto
//或
%matplotlib notebook
%matplotlib auto
#%matplotlib inline
import matplotlib.pyplot as plt
#3*2,區域6
ax_one = plt.subplot(335)
ax_one.scatter([500,200,850,400,200,700],[2,7,10,12,16,28])#折線圖
#3*1,區域2
ax_two = plt.subplot(322)
ax_two.pie([500,200,850,400,200,700])#餅圖
ax_two = plt.subplot(313)
ax_two.plot([500,200,850,400,200,700])#這里標注為餅圖有誤,應為折線圖
plt.show()
(二)、多子圖
subplots()--可以在規劃好的所有區域中一次繪制多個子圖
subplots(nrows=1,ncols=1,sharex=False,sharey=False,squeeze=True,subplot_kw=None,gridspec_kw=None,**fig_kw)
nrows:表示規劃區域的行數,默認為1。 ncols:表示規劃區域的列數,默認為1。 sharex, sharey:表示是否共享子圖的x軸或y軸。 (Squeeze表示是否返回壓縮的Axes對象;gridspec_kw表示用于控制區域結構屬性的字典)?
import matplotlib.pyplot as plt# 創建 3x3 的子圖布局
fig, ax_one = plt.subplots(3, 3)
# 在 (1, 1) 位置的子圖繪制散點圖
ax_one[1, 1].scatter([500, 200, 850, 400, 200, 700], [2, 7, 10, 12, 16, 28])
# 在 (1, 0) 位置的子圖繪制餅圖
ax_one[1, 0].pie([500, 200, 850, 400, 200, 700])
# 在 (0, 0) 位置的子圖繪制折線圖
ax_one[0, 0].plot([500, 200, 850, 400, 200, 700])
# 顯示圖形
plt.show()
(三)、跨行跨列
subplot2grid()---將整個畫布規劃成非等分布局的區域,并可在選中的某個區域中繪制單個子圖?
subplot2grid(shape,?loc,?rowspan=1,?colspan=1,?fig=None,?**kwargs)
shape:表示規劃的區域結構,該參數接收一個包含兩個整型數據的元組,元組中第1個元素表示規劃區域的行數,第2個元素代表規劃區域的列數。
loc:表示選擇區域的位置,該參數接收一個包含兩個整型數據的元組,元組中第1個元素表示子圖所在的行數(行數從0開始),第2個元素表示子圖所在的列數(列數從0開始)。 r
owspan:表示向下跨越的行數,默認為1。
colspan:表示向右跨越的列數,默認為1。
fig:表示放置子圖的畫布,默認當前畫布。?
%matplotlib auto
import matplotlib.pyplot as plt
#2*3,第0行第2列區域中繪制子圖
ax1=plt.subplot2grid((2,3),(0,2))
ax1.scatter([1,2,3,4,5], [1,2,3,4,5])#散點圖
#2*3,第1行第1~2列區域繪制子圖
ax2= plt.subplot2grid((2,3),(1,1),colspan=2)
ax2.pie([1,2,3,4,5])#餅圖
plt.show()