Matplotlib庫(kù)基礎(chǔ)-子圖的繪制

主要內(nèi)容:Matplotlib庫(kù)的繪圖區(qū)域,以及3種子圖的選取方式。

1.subplot()函數(shù)

import numpy as np

arr = np.arange(4)

plt.subplot(221)

plt.plot([1,2,3,4])

plt.subplot(224)

plt.plot(arr*arr)

plt.show()

輸出:

plt.subplot(2,2,4)表示講繪圖區(qū)域分成兩行兩列,按照從左到右的順序排列,選取第四塊。

橫向跨區(qū)域情況

我們?cè)趯?shí)際中會(huì)遇到一張圖跨幾個(gè)子圖的情況,我們還是用行列來(lái)分。

import numpy as np

arr = np.arange(4)

plt.subplot(221)

plt.plot([1,2,3,4],color='r')

plt.subplot(222)

plt.plot(arr*arr,color='g')

plt.subplot(212)

plt.plot(arr*arr*arr,color='b')

plt.show()

輸出:

從上面的兩個(gè)子圖的角度看,整個(gè)圖被分成兩行兩列,他們呢分別是1,2的位置,所以選取他們用plt.subplot(221)和plt.subplot(222),從下面的跨區(qū)域子圖來(lái)看,整個(gè)圖被分成了兩行1列,位于下面的是2,所以選取的是plt.subplot(212)。

縱向跨區(qū)域同樣理解:

#縱跨區(qū)域情況

import numpy as np

arr = np.arange(4)

plt.subplot(221)

plt.plot([1,2,3,4],color='r')

plt.subplot(223)

plt.plot(arr*arr,color='g')

plt.subplot(122)

plt.plot(arr*arr*arr,color='b')

plt.show()

輸出:

注意:subplot()函數(shù)與先創(chuàng)建畫布fig = plt.figure() 然后使用ax = fig.add_subplot() 在畫布里面添加子圖是一樣的效果。

2.subplot2gird()函數(shù)

當(dāng)我們碰到更為復(fù)雜的繪圖區(qū)域,使用subplot()函數(shù)會(huì)比較麻煩,這時(shí)候有一個(gè)更好用的subplot2grid()函數(shù)可以幫我們完成子圖布局。

plt.subplot2gird(GridSpec,CurSpec,colspan=1,rowspan=1)

理念:設(shè)定網(wǎng)格,選中網(wǎng)格,確定選中的區(qū)域或數(shù)量,下標(biāo)從0開始索引。

#復(fù)雜選取布局

plt.subplot2grid((3,3),(0,0),colspan=3)

plt.subplot2grid((3,3),(1,0),colspan=2)

plt.subplot2grid((3,3),(1,2),rowspan=2)

plt.subplot2grid((3,3),(2,0))

plt.subplot2grid((3,3),(2,1))

輸出:

plt.subplot2grid((3,3),(0,0),colspan=3):可以(3,3)表示將整個(gè)圖分成3行3列,每一個(gè)子圖可以用坐標(biāo)的形式選?。ㄟ@里就是(0,0)),colspan和rowspan可以給定跨行或是跨列的數(shù)量默認(rèn)是1。

3.GridSpec類

在matplotlib 中,存在一個(gè)模塊gridspec。模塊gridspec 是一個(gè)可以指定畫布中子區(qū)位置或者說(shuō)是布局的“分區(qū)”模塊。在模塊gridspec 中,有一個(gè)類GridSpec。類GridSpec 可以指定網(wǎng)格的幾何形狀,也就是說(shuō),可以劃定一個(gè)子區(qū)的網(wǎng)格狀的幾何結(jié)構(gòu)。

#使用GridSpec類創(chuàng)建子圖

from matplotlib.gridspec import GridSpec

gs = GridSpec(3,3)

ax1 = plt.subplot(gs[0,:])

ax2 = plt.subplot(gs[1,0:2])

ax3 = plt.subplot(gs[1:,2])

ax4 = plt.subplot(gs[2,0])

ax5 = plt.subplot(gs[2,1])

輸出:

GridSpec(3,3)可以將畫圖區(qū)域分成3*3的格子,我們可以將這些子區(qū)域看作3*3的二維數(shù)組,使用二維數(shù)組的切片來(lái)取子圖的對(duì)應(yīng)的跨行或是跨列的區(qū)域。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容