python繪制子圖技巧之plt.subplot、plt.subplots及坐標(biāo)軸修改
前言
偶然發(fā)現(xiàn)python(matplotlib)中繪制子圖有兩種方法,一種是plt.subplot,另一種是plt.subplots,這篇博客說一下這兩種方法的區(qū)別,用法,以及常用的一些函數(shù)。
plt.figure的作用是定義一個大的圖紙,可以設(shè)置圖紙的大小、分辨率等,例如
fig = plt.figure(figsize=(16,16),dpi=300) # 初始化一張畫布
plt.plot() 是直接在當(dāng)前活躍的的axes上面作圖,注意是當(dāng)前活躍的
知道這兩點(diǎn)基礎(chǔ)知識后,再來看subplot和subplots
plt.subplot
fig = plt.figure(figsize=(12, 4), dpi=200) for i in range(len(img)): plt.subplot(1, len(img),i+1) plt.imshow(img[i]) plt.show()
plt.subplot作用是指定子圖的位置,比如說現(xiàn)在總共有1行10列,當(dāng)前子圖位于哪里;
使用這個函數(shù)時需要先定義一個大的圖紙,因?yàn)閟ubplot函數(shù)無法更改圖紙的大小和分辨率等信息;所以必須通過fig = plt.figure(figsize=(12, 4), dpi=200)來定義圖紙相關(guān)設(shè)置;
同時,后續(xù)對于這個函數(shù)便捷的操作就是直接用plt,獲取當(dāng)前活躍的圖層
plt.subplots
fig, ax = plt.subplots(1, len(img), figsize=(15, 10)) for i in range(len(img)): ax[i].imshow(img[i]) plt.show()
使用plt.subplots函數(shù)時,可以直接在該函數(shù)內(nèi)部設(shè)置子圖紙信息
該函數(shù)返回兩個變量,一個是Figure實(shí)例fig,另一個 AxesSubplot實(shí)例ax 。fig代表整個圖像,ax代表坐標(biāo)軸和畫的子圖,通過下標(biāo)獲取需要的子區(qū)域。
后續(xù)我們需要對子圖操作時,直接ax[i].imshow(img[i])就行
與subplot的區(qū)別在于:(1)不需要通過plt來操作圖層,每一個圖層都有指定的axes;(2)一個寫在for循環(huán)外面,一個寫在里面;歸根于原因還是suplots繪制多少圖已經(jīng)指定了,所以ax提前已經(jīng)準(zhǔn)備好了,而subplot函數(shù)調(diào)用一次就繪制一次,沒有指定
subplot和subplots都可以實(shí)現(xiàn)畫子圖功能,只不過subplots幫我們把畫板規(guī)劃好了,返回一個坐標(biāo)數(shù)組對象,而subplot每次只能返回一個坐標(biāo)對象,subplots還可以直接指定畫板的大小。
坐標(biāo)軸修改
我們通常需要修改坐標(biāo)軸大小、刻度等信息,不論是子圖還是一張大圖;下面來看一下subplots和subplot在修改坐標(biāo)方面的差異
plt在修改坐標(biāo)時直接寫plt.xlabel();plt.ylabel();plt.xlim();plt.ylim()等等就行,但是axes和plt不一樣,axes需要加上set,例如:axes.set_xlabel();axes.set_xlim() 這一點(diǎn)需要格外注意
對于修改子圖的坐標(biāo)軸信息,很明顯是subplots更方便,因?yàn)樗歇?dú)立的axes,更方便讓每一個子圖的坐標(biāo)軸不同,例如
fig, ax = plt.subplots(1, len(img), figsize=(15, 10)) for i in range(len(img)): ax[i].imshow(img[i]) ax[i].set_xlabel("test csdn") #如果要單獨(dú)修改坐標(biāo)軸 ax[5].set_xlabel("test csdn") plt.show()
如果是subplot修改的話,參考代碼如下:
fig = plt.figure(figsize=(12, 4), dpi=200) for i in range(len(img)): plt.subplot(1, len(img),i+1) plt.imshow(img[i]) plt.xlabel("csdn test") plt.show()
當(dāng)然,subplot也可以有返回值,但是這個返回值是一個一個的,并不是和subplots一樣是一群都給你
fig = plt.figure(figsize=(12, 4), dpi=200) for i in range(len(img)): ax=plt.subplot(1, len(img),i+1) #或者這樣 # ax = plt.gca() 獲取當(dāng)前活躍的子圖層 plt.imshow(img[i]) ax.set_xlabel("csdn test") #其實(shí)這樣還是沒法單個子圖修改 plt.show()
xlabel、ylabel: 設(shè)置橫軸、縱軸標(biāo)簽及大小
例如plt.xlabel("csdn test", fontsize=20)
xlim、ylim: 設(shè)置x、y坐標(biāo)軸的起始點(diǎn)(從哪到哪)
例如plt.xlim(0,50) plt.ylim(0,60)
xticks、yticks: 設(shè)置坐標(biāo)軸刻度的字體大小
例如plt.xticks(labelsize=20)
title: 設(shè)置圖片的標(biāo)題
例如 plt.title(“csdn test”)
總結(jié)
到此這篇關(guān)于python繪制子圖技巧之plt.subplot、plt.subplots及坐標(biāo)軸修改的文章就介紹到這了,更多相關(guān)python plt.subplot plt.subplots及坐標(biāo)軸修改內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python高效定時任務(wù)處理APScheduler庫深入學(xué)習(xí)
這篇文章主要為大家介紹了Python高效定時任務(wù)處理APScheduler庫深入學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08利用Python生成文件md5校驗(yàn)值函數(shù)的方法
這篇文章主要給大家介紹了利用Python生成文件md5校驗(yàn)值函數(shù)的方法,文中給出了詳細(xì)的示例代碼,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,有需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01Python實(shí)戰(zhàn)之實(shí)現(xiàn)獲取動態(tài)圖表
這篇文章主要介紹了利用Python實(shí)現(xiàn)動態(tài)化圖表,文中的示例代碼介紹詳細(xì),對我們的工作或?qū)W習(xí)有一定的價值,感興趣的同學(xué)可以學(xué)習(xí)一下2021-12-12基于Keras 循環(huán)訓(xùn)練模型跑數(shù)據(jù)時內(nèi)存泄漏的解決方式
這篇文章主要介紹了基于Keras 循環(huán)訓(xùn)練模型跑數(shù)據(jù)時內(nèi)存泄漏的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨想過來看看吧2020-06-06python 獲取sqlite3數(shù)據(jù)庫的表名和表字段名的實(shí)例
今天小編就為大家分享一篇python 獲取sqlite3數(shù)據(jù)庫的表名和表字段名的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07