網站首頁 編程語言 正文
簡單了解多子圖
學習matplotlib的時候,有人肯定會覺得為啥不用Excel,為啥不用origin,為啥不直接使用軟件,其實matplotlib繪圖之所以在python領域經久不衰,是有它的獨特之處的,我認為這其中的一個亮點就是,matplotlib繪制多個子圖的時候,我們可以根據自己的想法去排列子圖的順序,也可以生成不同的子圖數量,類似于前端web可視化大屏,有著較好的用戶體驗感!
使用plt.subplot(mnx) 分別繪制
# -*- coding: utf-8 -*-
import matplotlib as mpl
import matplotlib.pyplot as plt
t=np.arange(0.0,2.0,0.1)
s=np.sin(t*np.pi)
plt.subplot(2,2,1) #要生成兩行兩列,這是第一個圖
plt.plot(t,s,'b*')
plt.ylabel('y1')
plt.subplot(2,2,2) #兩行兩列,這是第二個圖
plt.plot(2*t,s,'r--')
plt.ylabel('y2')
plt.subplot(2,2,3)#兩行兩列,這是第三個圖
plt.plot(3*t,s,'m--')
plt.ylabel('y3')
plt.subplot(2,2,4)#兩行兩列,這是第四個圖
plt.plot(4*t,s,'k*')
plt.ylabel('y4')
plt.show()
使用plt.subplot()方法,生成子圖,規則總結如下:
第一個數字是行,第二個數字是列,第三個數字是個數(圖形所處順序的序號)
例如:224就是生成兩行兩列的子圖,本圖形是第四個,那么就是第二行第二列的圖形
那么有時候,有些人覺得這樣太麻煩了,每次生成都要在繪圖程序前面加一行這樣的代碼,為什么不可以一次性生成我需要的畫布呢?答案是可以的!
使用plt.subplots(m,n),可以一次性生成m行n列的字圖
注意前面需要figure和ax進行接收
調用就和我們數組一樣!
使用plt.subplots(m,n)一次性繪制
# -*- coding: utf-8 -*-
import matplotlib as mpl
import matplotlib.pyplot as plt
t=np.arange(0.0,2.0,0.1)
s=np.sin(t*np.pi)
c=np.cos(t*np.pi)
figure,ax=plt.subplots(2,2) # 多行subplots得到的ax數組是二維的
ax[0][0].plot(t,s,'r*')
ax[0][1].plot(t*2,s,'b--')
ax[1][0].plot(t,c,'g*')
ax[1][1].plot(t*2,c,'y--')
# -*- coding: utf-8 -*-
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
t=np.arange(0.0,2.0,0.1)
s=np.sin(t*np.pi)
c=np.cos(t*np.pi)
figure,ax=plt.subplots(1,2,figsize=(6,2),dpi=120) # 一行subplots得到的ax數組是一維的
ax[0].plot(t,s,'r*')
ax[1].plot(t*2,s,'b--')
plt.subplots(nrows=1,ncols=3,figsize=(5,5))
#plt.subplots(nrows=1,ncols=3)
# 返回一個figure對象,和一個axesSubplot子圖對象的數組
# 行或者列等于1,返回一個一維數組
加一個plt.tight_layout()會使得圖形更加緊湊
plt.tight_layout()
plt.subplots(nrows=2,ncols=3, figsize=(12,8)) # 如果行列都不為1,那么返回一個2維數組
plt.subplots(nrows=3,ncols=4) # 如果行和列都大于1,返回1個Figure對象,和1個包含3*4=12個子圖對象的矩陣(2維數組)
# 341 342 343 344
# 345 346 347 348
# 349 3,4,10 3,4,11 3,4,12
高級進階
plt.subplot(121)
plt.subplot(222)
plt.subplot(224)
看到上面你會想到什么?會生成怎樣的畫布呢?
下面我就給大家詳細的解釋一下,為啥會出現這樣的畫布,首先我的需求是在左邊出現一個子圖,比較長的,最好是右邊兩個子圖的長度和,那么應該怎么做呢?遇到這樣的情況我們仍然需要把這一個平面分成均等分,那么也就是四個。
當我們畫一個左邊的圖的時候,我們應該把畫布想象為一行兩列的畫布,第一個自然也就是121
當我們畫右邊的圖形的時候,我們應該把畫布想象為兩行兩列的畫布,右邊第一個自然就是222,第二個自然就是224。
下面我們可以多看幾個,來驗證我們得推論
plt.subplot(221)
plt.subplot(223)
plt.subplot(122)
plt.subplot(211)
plt.subplot(223)
plt.subplot(224)
plt.subplot(221)
plt.subplot(222)
plt.subplot(212)
plt.figure(figsize=(12,5))
plt.subplot(231)
plt.subplot(233)
plt.subplot(234)
plt.subplot(236)
plt.subplot(132)
plt.figure(figsize=(16,5))
plt.subplot(262)
plt.subplot(265)
plt.subplot(268)
plt.subplot(2,6,11)
plt.subplot(132)
注意這個間隙是自動產生的,如果需要將間隙變的更大,那么就可以取最左邊的值和最右邊的值
plt.figure(figsize=(16,5))
plt.subplot(241)
plt.subplot(244)
plt.subplot(245)
plt.subplot(2,4,8)
plt.subplot(132)
?總結
在生成上面案例的時候,我們需要利用Excel進行編排,不然很容易出錯的!
原文鏈接:https://wxw-123.blog.csdn.net/article/details/124062039
相關推薦
- 2022-09-22 提高接口并發量,防止崩潰
- 2022-09-25 什么是模板引擎(web)?常見的模板引擎有哪些?thymeleaf的常用指令介紹
- 2022-03-16 .net6環境下使用RestSharp請求GBK編碼網頁亂碼的解決方案_實用技巧
- 2022-06-12 C語言?struct結構體超詳細講解_C 語言
- 2022-04-14 k8s安裝過程遇到的問題
- 2022-06-29 基于C++實現五子棋小游戲_C 語言
- 2022-08-15 使用element中el-table設置type=“expand“展開行隱藏小箭頭的方法(列表單選、
- 2023-01-31 MongoDB?模式設計詳解_MongoDB
- 最近更新
-
- 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同步修改后的遠程分支