小杰python高級(four day)——matplotlib庫

1.繪制子圖的方式

  1. pyplot中函數subplot
  2. Figure類中的函數add_subplot
  3. pyplot中函數subplots
fig, ax = plt.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False,
 squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
功能:繪制多個子圖,可以一次生成多個
參數:nrows和ncols:整數,表示子圖的行數和列數。
      sharex和sharey:布爾值或字符串,表示是否共享x軸或y軸的屬性。            可選值有TrueFalse'row''col'
      squeeze:布爾值,默認為True。當子圖只有一個時,返回一個Axes對象
而不是一個數組。False時返回一個二維數組
      width_ratios:列寬比例的序列,用于調整各列的寬度比
      height_ratios:行高比例的序列,用于調整各行的高度比
      subplot_kw:字典類型,可選參數。把字典的關鍵字傳遞給add_subplot()
來創建每個子圖。
      gridspec_kw:字典類型,可選參數。把字典的關鍵字傳遞給GridSpec構造函數
創建子圖放在網格里(grid)。**fig_kw:把所有詳細的關鍵字參數傳給figure()函數。
返回值:fig:這是整個圖形的對象,可以對其進行全局設置,如標題、大小等。
        axes:這是一個數組,包含所有的子圖。數組的形狀由nrows和ncols決定。
例如,如果 nrows=2 和 ncols=3,則 axes 將是一個 2x3 的數組,每個元素都是一個
子圖對象。
# 繪制子圖,返回值包含Figure對象和Axes對象,Axes對象是一個數組,可以通過下標進行訪問子圖
fig, ax = plt.subplots(2, 2)ax[0, 0].plot([2,3], [4,5])
ax[0, 1].plot([1,1], [2,1])fig.suptitle('sub')plt.show()

2.pyplot中常用函數

gcf

功能:獲取當前窗口Figure對象如果沒有活動的圖形,這個函數將創建一個新的圖形,并將其作為當前活動的圖形。通過此函數獲取了當前圖形的Figure對象后,可以調用Figure類中的相關操作

gca

功能:獲取獲取當前圖形中的Axes對象

x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)
plt.plot(x, y, label='sin')
# 獲取Figure對象
fig = plt.gcf()
fig.suptitle('sin')
# 獲取Axes對象
ax = plt.gca()
ax.set_xlabel('x')plt.show()
savefig

matplotlib.pyplot 模塊中的 savefig 函數用于將當前圖形保存到文件中。

plt.savefig(*args, **kwargs)

參數:

????????fname:字符串或類似文件的對象,指定保存文件的路徑或文件名。可以是相對路徑或絕對路徑。如果文件擴展名缺失,將使用默認格式(通常是 PNG)。

????????dpi:可選,指定保存圖像的dpi(每英寸點數)。默認值是figure.dpi。

????????format:可選,指定文件格式(如 'png', 'pdf', 'svg', 'ps', 'eps', ...)。如果省略,將使用文件擴展名推斷格式。

????????bbox_inches:可選,指定裁剪框,可以是 'tight''standard' 或一個 Bbox 對象。默認為 'standard'

????????????????tight:保存的圖形文件中不會有不必要的空白邊緣,使得圖形更加緊湊和整潔

????????pad_inches:可選,指定邊框填充量(以英寸為單位)。默認為 0.1。

????????facecolor:可選,指定圖像的背景顏色。默認為 'w'(白色)。

????????edgecolor:可選,指定圖像邊框的顏色。默認為 'w'(白色)。

????????orientation:可選,指定頁面方向('portrait''landscape'),僅對保存為 PDF 文件時有效。

????????papertype:可選,指定紙張類型(如 'a4', 'letter'),僅對保存為 PDF 文件時有效。

????????format_kwargs:可選,其他與格式相關的關鍵字參數。

????????metadata:可選,指定要寫入文件的元數據。

????????pil_kwargs 和 pdf_kwargs:可選,特定于 PIL 或 PDF 格式的參數。

x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)
plt.plot(x, y, label='sin')y = np.cos(x)
plt.plot(x, y, label='cos')
# 隱藏坐標軸
plt.axis('off')
# 保存圖片
plt.savefig('./sin.png')
imsave

用于將圖像數據保存到磁盤上的函數

matplotlib.pyplot.imsave(fname, arr, **kwargs)

參數:fname:保存圖像的文件名,可以是相對路徑或絕對路徑。

????????arr:表示圖像的NumPy數組。

????????kwargs:可選參數,用于指定保存的圖像格式以及圖像質量等參數。

imsave和savefig區別

????????savefig可以繪制圖像保存文件包含坐標標題圖例

????????imsave是二維或三維數據保存圖像文件不含坐標沒法直接保存plot等繪制圖像

arr = np.array([[1,2,3,1], [2,3,1,2]])
# 繪制二維或三維數據圖像,通過cmap進行顏色映射
plt.imshow(arr, cmap='gray')
plt.imsave('./test.png', arr)
plt.show()

imshow

????????imshow() 函數是 Matplotlib.pyplot 庫中的一個函數,它常用于繪制二維的灰度圖像或彩色圖像,也可以用于繪制矩陣、熱力圖、地圖等。

imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, *, data=None, **kwargs)

參數:X:圖像數據。這通常是一個二維數組(灰度圖像)或一個三維數組(彩色圖像,其中第三維是顏色通道)。對于二維數組,可以使用 cmap 參數來指定顏色映射

????????cmap:顏色映射。用于控制圖像中不同數值所對應的顏色。默認顏色是'viridis',也可以設置其他顏色,如`gray`、`hot`、`jet`、'binary'

????????norm:用于將數據值標準化到 [0, 1] 區間。以便與顏色映射一起使用。如果為 None,則數據將直接用于顏色映射。

????????aspect:控制圖像寬高比,'auto'(默認,根據數據形狀自動調整)、'equal'(使像素為正方形)或數字(指定寬高比)

????????interpolation:插值方法。用于控制圖像的平滑程度和細節程度。可以選擇`nearest`、`bilinear`、`bicubic`等插值方法。

????????alpha:圖像透明度。取值范圍為0~1

????????origin:坐標軸原點的位置。可以設置為`upper`或`lower`。

????????extent:控制顯示的數據范圍。可以設置為`[xmin, xmax, ymin, ymax]`。

????????vmin、vmax:控制顏色映射的值域范圍。

? ? ? ?filternorm 和 filterrad:用于圖像濾波的對象。可以設置為`None`、`antigrain`、`freetype`等。

????????imlim: 用于指定圖像顯示范圍。

????????resample:用于指定圖像重采樣方式。

????????url:用于指定圖像鏈接。

plt.colorbar()

功能:顯示顏色柱

imread

????????imread() 方法是 Matplotlib 庫中的一個函數,用于從圖像文件中讀取圖像數據。

imread() 方法返回一個 numpy.ndarray 對象,其形狀是 (nrows, ncols, nchannels),表示讀取的圖像的行數、列數和通道數:

  1. 如果圖像是灰度圖像,則 nchannels 為 1。
  2. 如果是彩色圖像,則 nchannels 為 3 或 4,分別表示紅、綠、藍三個顏色通道和一個 alpha 通道;為3時表示紅綠藍,為4時表示紅綠藍、透明度。

matplotlib.pyplot.imread(fname, format=None)

參數:fname:指定了要讀取的圖像文件的文件名或文件路徑,可以是相對路徑或絕對路徑。

????????format:參數指定了圖像文件的格式,如果不指定,則默認根據文件后綴名來自動識別格式。

返回值:numpy.ndarray 對象

arr = plt.imread('map.png')
plt.imshow(arr)
plt.show()
close

plt.close(fig=None)

功能:該函數用于關閉一個或多個打開的圖形窗口,釋放資源

參數:fig:指定要關閉的圖形,可以是Figure對象,也可以是圖形對應的整數

????????all:關閉所有圖形,如果參數省略,關閉當前圖像

Line2D? 類函數

????????plt.plot函數的返回值表示包含一個或多個 Line2D 對象(有多條線時會返回多個Line2D對象)

????????Line2D 是 Matplotlib 中用于表示二維線條的類。通過返回 Line2D 對象,你可以訪問和修改線條的各種屬性,例如顏色、線型、標簽等。這使得 plt.plot() 不僅僅是繪制圖形,還可以讓你對繪制的線條進行進一步的定制。

get_label

????????該方法用于獲取圖像標簽(參數中指定的label值)。這個方法通常用于獲取已經設置好的標簽,以便于后續的檢查或修改.

set_data

????????該函數功能為用于動態更新線條的 x 和 y 數據。主要在需要實時更新圖形(例如動畫)的場景中。

Line2D.set_data(xdata, ydata)

????????調用該方法后,圖形會根據新的數據重新繪制。它不會自動刷新圖形,但可以與 plt.draw() 或 plt.pause() 等方法結合使用,以實現動態更新的效果。

pause

用于在繪圖時暫停程序執行,并在指定的時間間隔后繼續執行。它常用于動態更新圖形或創建簡單的動畫效果。

函數的作用:

  • 暫停程序:plt.pause(interval) 會暫停程序的執行,暫停的時間由參數 interval(單位為秒)決定。
  • 刷新圖形窗口:在暫停期間,plt.pause() 會強制刷新圖形窗口,顯示最新的圖形內容。這使得它特別適合用于動態更新圖形的場景。

函數原型:

pyplot.pause(interval)
參數:interval:時間,秒
x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)
ld, = plt.plot(x, y, label='sin')# 獲取圖像中label數據
# ret = ld.get_label()
# print(ret)y = np.cos(x)
# 根據指定的時間暫停程序
plt.pause(5)
# 修改原圖像的數據
ld.set_data(x, y)plt.show()

3.繪制子圖網格

????????使用模塊gridspec中的函數GridSpec繪制

????????在 Matplotlib 中,GridSpec 對象提供了一種靈活的方式來創建子圖網格(subplots grid),允許子圖跨越多個行和列,以及具有不均勻的行高和列寬。

from matplotlib.gridspec import GridSpec

GridSpec(nrows, ncols, figure=None, left=None, right=None, bottom=None, top=None, wspace=None, hspace=None, width_ratios=None, height_ratios=None, w_pad=None, h_pad=None)

參數:nrows: int子圖網格的行數。

????????ncols: int子圖網格的列數。

????????figure: matplotlib.figure.Figure,

???????????????????optional,

???????????????????default: None

???????????????????指定的圖形對象。如果未提供,則默認創建一個新的圖形對象。

????????left: float, optional, default: None子圖網格左側的相對位置(01 的比例)。如果未指定,則使用默認的左邊界。

????????right: float, optional, default: None子圖網格右側的相對位置(01 的比例)。如果未指定,則使用默認的右邊界。

????????bottom: float, optional, default: None子圖網格底部的相對位置(01 的比例)。如果未指定,則使用默認的底邊界。

????????top: float, optional, default: None子圖網格頂部的相對位置(01 的比例)。如果未指定,則使用默認的頂邊界。

????????wspace: float or None, optional, default: None子圖之間的水平間距(以英寸為單位)或作為子圖寬度的比例。如果未指定,則使用默認的間距。

????????hspace: float or None, optional, default: None子圖之間的垂直間距(以英寸為單位)或作為子圖高度的比例。如果未指定,則使用默認的間距。

????????width_ratios: list of floats, optional, default: None

指定每一列的寬度比例。如果指定,則 ncols 必須與列表長度匹配。

????????height_ratios: list of floats, optional, default: None

指定每一行的高度比例。如果指定,則 nrows 必須與列表長度匹配。

????????w_pad: float, optional, default: None子圖之間的水平填充(以英寸為單位)。如果未指定,則使用默認的填充。

????????h_pad: float, optional, default: None子圖之間的垂直填充(以英寸為單位)。如果未指定,則使用默認的填充。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.gridspec import GridSpec
# import matplotlib.gridspec as gs
fig = plt.figure()# 添加子圖網格
gs = GridSpec(2, 3)
# 在第一行添加三個子圖
fig.add_subplot(gs[0, 0])
fig.add_subplot(gs[0, 1])
fig.add_subplot(gs[0, 2])
# 在第二行添加一個子圖
fig.add_subplot(gs[1, :])plt.show()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918497.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 編程out 參數需要在函數體內部初始化,然后引用的時候無需初始化

核心規則方法內部必須初始化:在方法體中,必須在方法返回前對 out 參數顯式賦值(未賦值會導致編譯錯誤)調用時無需初始化:調用方傳遞 out 參數前不需要初始化變量(可直接使用未賦值的局部變量)下…

【Redis在數據治理與數據隱私保護策略中的優化】

## Redis的自動補全功能:用戶體驗的無縫之助Redis作為一款高效的開源緩存數據庫,始終在用戶體驗優化方面走在前列。其自動補全功能的引入,為用戶帶來了全新的搜索體驗。這種功能不僅提升了搜索效率,更為用戶提供了更智能化的服務。…

Sklearn 機器學習 異常值檢測 局部異常因子算法LOF

??親愛的技術愛好者們,熱烈歡迎來到 Kant2048 的博客!我是 Thomas Kant,很開心能在CSDN上與你們相遇~?? 本博客的精華專欄: 【自動化測試】 【測試經驗】 【人工智能】 【Python】 Sklearn 機器學習異常值檢測:局部異常因子算法(LOF) 在實際的機器學習任務中,異常…

衡量機器學習模型的指標

為了進一步了解模型的能力,我們需要某個指標來衡量,這就是性能度量的意義。有了一個指標,我們就可以對比不同的模型了,從而知道哪個模型相對好,哪個模型相對差,并通過這個指標來進一步調參以逐步優化我們的…

Day24|學習前端CSS

HTML把一大段雜亂無章的話,調整變成文章格式顏色rgba,16進制CSS選擇器(從上往下,權重越低)類選擇器#(為多個元素設計相同樣式偽類選擇器:和類選擇器.元素選擇器p,div,li通…

初識數據結構——優先級隊列(堆!堆!堆!)

數據結構專欄 ?(click) 今天就讓我們來聊聊這個讓無數程序員又愛又恨的數據結構——堆(Heap)。 一、優先級隊列 vs 普通隊列 特性普通隊列優先級隊列出隊順序FIFO(先進先出)按優先級高低(默認小的先出)底…

嵌入式學習day25

fwrite&#xff1a;fread&#xff1a;fread/fwrite&#xff1a;拷貝圖片&#xff1a;#include <stdio.h>int main(void) {FILE *fsrc NULL;FILE *fdst NULL;char tmpbuff[4096] {0};size_t nret 0;fsrc fopen("src.jpg", "r");if (NULL fsrc){…

2025年中科院2區紅杉優化算法Sequoia Optimization Algorithm-附Matlab免費代碼

1. 簡介 提出了紅杉優化算法&#xff08;SequoiaOA&#xff09;&#xff0c;這是一種受紅杉森林生態系統自我調節動力學和彈性啟發的新型元啟發式方法&#xff0c;不同于傳統的奇異生物學或現象學靈感。開發一個全面的生態系統驅動框架&#xff0c;包括數學建模、系統分析和通過…

【C#】從 Queue 到 ConcurrentQueue:一次對象池改造的實戰心得

背景 最近在做一個圖像處理的 WPF 項目&#xff0c;底層使用 Halcon 的 HObject 來存放圖像。為了減少頻繁創建和釋放對象帶來的開銷&#xff0c;我實現了一個對象池&#xff0c;用來存放 HObject&#xff0c;方便后續流程復用。 最初的實現用的是 .NET 自帶的 Queue<T>&…

深度解析 AS32S601 芯片 CAN Bus Off 機制:從原理到應用的全流程指南

一、前言在汽車電子、工業自動化等眾多領域&#xff0c;CAN 總線作為一種可靠的通信協議被廣泛應用。而 AS32S601 芯片憑借其卓越的性能和可靠性&#xff0c;在這些領域也發揮著重要作用。其中&#xff0c;CAN Bus Off 功能作為 CAN 總線通信中的關鍵錯誤處理機制&#xff0c;對…

PyCharm Community 2024.2.3.exe 安裝教程(詳細步驟,附安裝包下載)

?1. 下載安裝包? 安裝下載地址&#xff1a;https://pan.quark.cn/s/ca11cb817ee5&#xff0c;你已經下載好了 pycharm-community-2024.2.3.exe 這個文件&#xff08;通常是從 JetBrains 官網下的&#xff09;。雙擊這個 .exe 文件開始安裝。 ?2. 開始安裝向導? 雙擊后&am…

JAVA:SpringBoot 集成 Selenium 實現高效爬蟲

?? 1、簡述 在互聯網數據采集中,傳統基于 Jsoup 或 HttpClient 的爬蟲方案面對復雜 JavaScript 渲染頁面時經常力不從心。此時,Selenium WebDriver 提供了更強大的模擬真實瀏覽器行為能力,成為爬取動態網站的利器。 為了繞過反爬機制,結合 IP 代理池 是提升穩定性和并發…

終端安全檢測和防御技術

目錄 1. 終端安全風險 2. 終端安全檢測和防御技術 3. 網關殺毒技術 3.1 計算機病毒工作步驟 3.2 殺毒防御產品 3.3 網關殺毒功能優勢 3.4 網關殺毒實現方式 4.僵尸網絡檢測和防御技術 4.1 僵尸網絡 4.2 僵尸網絡的形成過程&#xff08;APT場景下&#xff09; 4.3 檢測…

Java緩沖流

字節緩沖流&#xff1a;原理&#xff1a;底層自帶長度為8192的緩沖區提高性能拷貝文件一次讀一個字節一次讀一個字節數組字節緩沖流的讀寫原理字符緩沖流&#xff1a;特定方法字符緩沖輸入流基本寫法輸入所有數據字符緩沖流輸出總結

web服務器tomcat內部工作原理以及樣例代碼

目錄 一、Tomcat 運行原理與 Servlet 機制 1、為什么 Java Web 項目需要 Tomcat 2. 進程模式 vs 線程模式 3、Servlet / Controller 是怎么跟 Tomcat 對接的? 4、java反射與代理機制 ※--高級知識點 (1)原理 (1)樣例:用反射和注解模擬 Tomcat 處理 HTTP 請求時,動…

AI賦能IT服務管理:從被動響應到智能驅動的躍遷

過去十年&#xff0c;IT服務管理&#xff08;ITSM&#xff09;經歷了從紙質工單到數字化平臺的變革&#xff0c;但無論工具多么先進&#xff0c;大多數IT團隊依然面臨著相同的困境&#xff1a;事件處理速度跟不上業務變化人工重復操作占用大量時間數據雖多&#xff0c;卻缺乏可…

云計算-K8s 核心組件之CronJob、RBAC、HPA ,LimitRange、DaemonSet、nodeSelector如何作戰?

目錄 1.CronJob管理 2.RBAC管理 3.HPA管理 4.健康檢查 5.LimitRange管理 6.DaemonSet管理 7.nodeSelector管理 簡介 1. CronJob&#xff08;定時任務控制器&#xff09; 按固定時間間隔&#xff08;類似 Linux cron&#xff09;自動觸發一次性任務&#xff08;Job&#…

數據分析學習總結之實例練習(雙十一淘寶美妝)

本次通過對雙十一淘寶美妝數據的分析實踐&#xff0c;我系統掌握了數據處理與分析的完整流程&#xff0c;從數據初步認知到深度挖掘&#xff0c;再到可視化呈現與結論提煉&#xff0c;收獲頗豐。以下是具體的學習總結&#xff1a;一、數據初步了解&#xff1a;奠定分析基礎在分…

如何評估一個需求的業務價值

要科學、全面地評估一個需求的業務價值&#xff0c;核心在于建立一個多維度的、從戰略到財務、從客戶到風險的“價值羅盤”&#xff0c;并運用這套羅盤&#xff0c;對需求進行系統性的、數據驅動的量化與定性分析。一套成熟的價值評估體系&#xff0c;其構建必須涵蓋五大關鍵視…

day38_2025-08-12

一、 圖像數據的介紹 1.1 灰度圖像 從這里開始我們進入到了圖像數據相關的部分&#xff0c;也是默認你有之前復試班計算機視覺相關的知識&#xff0c;但是一些基礎的概念我仍然會提。 昨天我們介紹了minist這個經典的手寫數據集&#xff0c;作為圖像數據&#xff0c;相較于結構…