網站首頁 編程語言 正文
前言
偶然發現python(matplotlib)中繪制子圖有兩種方法,一種是plt.subplot,另一種是plt.subplots,這篇博客說一下這兩種方法的區別,用法,以及常用的一些函數。
plt.figure的作用是定義一個大的圖紙,可以設置圖紙的大小、分辨率等,例如
fig = plt.figure(figsize=(16,16),dpi=300) # 初始化一張畫布
plt.plot() 是直接在當前活躍的的axes上面作圖,注意是當前活躍的
知道這兩點基礎知識后,再來看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作用是指定子圖的位置,比如說現在總共有1行10列,當前子圖位于哪里;
使用這個函數時需要先定義一個大的圖紙,因為subplot函數無法更改圖紙的大小和分辨率等信息;所以必須通過fig = plt.figure(figsize=(12, 4), dpi=200)來定義圖紙相關設置;
同時,后續對于這個函數便捷的操作就是直接用plt,獲取當前活躍的圖層
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函數時,可以直接在該函數內部設置子圖紙信息
該函數返回兩個變量,一個是Figure實例fig,另一個 AxesSubplot實例ax 。fig代表整個圖像,ax代表坐標軸和畫的子圖,通過下標獲取需要的子區域。
后續我們需要對子圖操作時,直接ax[i].imshow(img[i])就行
與subplot的區別在于:(1)不需要通過plt來操作圖層,每一個圖層都有指定的axes;(2)一個寫在for循環外面,一個寫在里面;歸根于原因還是suplots繪制多少圖已經指定了,所以ax提前已經準備好了,而subplot函數調用一次就繪制一次,沒有指定
subplot和subplots都可以實現畫子圖功能,只不過subplots幫我們把畫板規劃好了,返回一個坐標數組對象,而subplot每次只能返回一個坐標對象,subplots還可以直接指定畫板的大小。
坐標軸修改
我們通常需要修改坐標軸大小、刻度等信息,不論是子圖還是一張大圖;下面來看一下subplots和subplot在修改坐標方面的差異
plt在修改坐標時直接寫plt.xlabel();plt.ylabel();plt.xlim();plt.ylim()等等就行,但是axes和plt不一樣,axes需要加上set,例如:axes.set_xlabel();axes.set_xlim() 這一點需要格外注意
對于修改子圖的坐標軸信息,很明顯是subplots更方便,因為他有獨立的axes,更方便讓每一個子圖的坐標軸不同,例如
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") #如果要單獨修改坐標軸 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()
當然,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() 獲取當前活躍的子圖層 plt.imshow(img[i]) ax.set_xlabel("csdn test") #其實這樣還是沒法單個子圖修改 plt.show()
xlabel、ylabel: 設置橫軸、縱軸標簽及大小
?例如plt.xlabel("csdn test", fontsize=20)
xlim、ylim: 設置x、y坐標軸的起始點(從哪到哪)
?例如plt.xlim(0,50) plt.ylim(0,60)
xticks、yticks: 設置坐標軸刻度的字體大小
?例如plt.xticks(labelsize=20)
title: 設置圖片的標題
?例如 plt.title(“csdn test”)
總結
原文鏈接:https://blog.csdn.net/gailj/article/details/122149994
相關推薦
- 2022-12-12 Android?DataBinding類關系深入探究_Android
- 2022-08-02 利用Redis進行數據緩存的項目實踐_Redis
- 2022-08-19 ubuntu上設置Redis開機自啟
- 2023-07-07 根據文件后綴名稱獲取contentType,其中Minio上傳文件會用到contentType
- 2022-08-25 Redis的4種緩存模式分享_Redis
- 2023-10-12 form組件的封裝(element ui ) 簡單版本
- 2023-01-23 React新擴展函數setState與lazyLoad及hook介紹_React
- 2022-07-25 Python?APScheduler?定時任務詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支