Matplotlib 模塊入門

????????Python 中有個非常實用的可視化庫 ——Matplotlib。數據可視化是數據分析中不可或缺的環節,而 Matplotlib 作為 Python 的 2D 繪圖庫,能幫助我們生成高質量的圖表,讓數據更直觀、更有說服力。接下來,我們將從 Matplotlib 的概述、圖表的基本設置到常用圖表的繪制,做個介紹。

一、Matplotlib 模塊的概述

1. 了解 Matplotlib 模塊

Matplotlib 是一個功能強大的 Python 2D 繪圖庫,它支持多種硬拷貝格式和跨平臺的交互式環境,能生成出版物級別的圖形。無論是簡單的折線圖、柱狀圖,還是復雜的熱力圖、雷達圖,Matplotlib 都能輕松應對。只需幾行代碼,就能將枯燥的數據轉化為清晰直觀的圖表,讓數據背后的規律和趨勢一目了然。

比如,我們可以用它繪制學生成績對比圖、銷售額趨勢圖、各省銷量占比圖等,這些圖表能幫助我們快速理解數據特征,為決策提供支持。

2. Matplotlib 模塊的安裝

在使用 Matplotlib 之前,我們需要先安裝它。安裝方法很簡單,主要有以下幾種:

  1. 使用 pip 工具安裝:打開 “命令提示符” 或 “Anaconda Prompt” 窗口,輸入命令pip install matplotlib,按回車即可完成安裝。
  2. 在 Pycharm 開發環境中安裝:通過 Pycharm 的包管理工具,搜索 “matplotlib” 并安裝,方便快捷。

安裝完成后,我們就可以在代碼中通過import matplotlib.pyplot as plt引入模塊,開始繪圖了。

3. 體驗 Matplotlib 可視化圖表

接下來,我們通過一個簡單的例子來體驗一下 Matplotlib 的繪圖功能。繪制第一張圖表只需三步:

  1. 引入 pyplot 模塊:import matplotlib.pyplot as plt
  2. 使用plot()方法繪制圖表:plt.plot([1, 2, 3, 4, 5])
  3. 使用show()函數顯示圖表:plt.show()

運行這段代碼,我們就能看到一個簡單的折線圖。在 Jupyter Notebook 中,同樣可以通過類似的代碼繪制圖表,非常便捷。

二、圖表的基本設置

要繪制出美觀且信息完整的圖表,需要對圖表進行一系列基本設置。下面我們介紹一些常用的設置方法。

1. 基本繪圖 ——plot()函數

plot()函數是 Matplotlib 中最基礎的繪圖函數,用于繪制折線圖。它的語法為:

matplotlib.pyplot.plot(x, y, format_string, **kwargs)

  1. xy分別為 x 軸和 y 軸的數據。
  2. format_string用于控制曲線的格式,包括顏色、線條樣式和標記樣式。
  3. ** kwargs為其他鍵值參數,用于進一步設置曲線屬性。

例如,我們可以通過plt.plot(x, y, color='r', linestyle='--', marker='o')繪制一條紅色、虛線、帶圓形標記的折線。

其中,顏色可以通過字母(如'r'表示紅色、'b'表示藍色)、十六進制值(如'#FFFF00'表示黃色)或灰度值(如0.5)設置;線條樣式有實線('-')、雙劃線('--')、點劃線('-.')、虛線(':')等;標記樣式包括點(.)、實心圓('o')、三角('v' '^'等)、正方形('s')等。

2. 設置畫布 ——figure()函數

畫布是圖表的基礎,figure()函數用于創建自定義畫布,其語法為:

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

  1. num:圖像的編號或名稱。
  2. figsize:指定畫布的寬和高(單位為英寸)。
  3. dpi:繪圖對象的分辨率,數值越大,畫布越清晰。
  4. facecoloredgecolor:分別設置畫布的背景顏色和邊框顏色。
  5. frameon:是否顯示邊框,默認為True

例如,plt.figure(figsize=(5, 3), facecolor='yellow')可以創建一個 5×3 英寸的黃色畫布。

3. 設置坐標軸 ——xlabel()ylabel()等函數

坐標軸是圖表的重要組成部分,合理設置坐標軸能讓圖表更易讀。

  1. 坐標軸標題xlabel()ylabel()函數分別用于設置 x 軸和 y 軸的標題,例如plt.xlabel('20231')plt.ylabel('基礎體溫')
  2. 坐標軸刻度xticks()yticks()函數用于設置坐標軸的刻度和標簽,例如plt.xticks(range(1, 15))將 x 軸刻度設置為 1 到 14 的連續數字。
  3. 坐標軸范圍xlim()ylim()函數用于設置坐標軸的取值范圍,例如plt.ylim(35, 45)將 y 軸范圍設置為 35 到 45。

此外,還可以通過axis()函數設置坐標軸的其他屬性,如axis('off')關閉坐標軸,axis('equal')使 x、y 軸長度一致等。

需要注意的是,Matplotlib 默認可能存在中文亂碼和負號顯示問題,我們可以通過以下代碼解決:

plt.rcParams['font.sans-serif'] = ['SimHei']? # 解決中文亂碼

plt.rcParams['axes.unicode_minus'] = False??? # 解決負號不顯示

4. 設置文本標簽 ——text()函數

text()函數用于在圖表的指定位置添加文本標簽,語法為:

matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)

  1. xy為文本標簽的坐標位置。
  2. s為文本內容。
  3. fontdict用于設置文本的字體樣式,如字體大小、顏色等。

例如,在體溫折線圖中,我們可以用text()函數為每個數據點添加具體的體溫值,讓數據更清晰。

5. 設置標題和圖例 ——title()legend()函數

-** 標題 **:title()函數用于設置圖表的標題,語法為plt.title(label, fontdict=None, loc='center', pad=None,** kwargs),其中label為標題文本,loc控制標題的水平位置('center''left''right')。

  1. 圖例legend()函數用于添加圖例,標識圖表中的不同數據系列。可以通過loc參數設置圖例的位置(如'upper right'表示右上角),通過ncol參數設置圖例的列數等。例如plt.legend(('基礎體溫',), loc='upper right')

6. 添加注釋 ——annotate()函數

annotate()函數用于為圖表添加帶箭頭的注釋,突出顯示重要數據點,語法為:

plt.annotate(s, xy, *args, **kwargs)

  1. s為注釋文本。
  2. xy為被注釋的坐標點。
  3. xytext為注釋文本的坐標位置。
  4. arrowprops用于設置箭頭的樣式。

例如,在體溫折線圖中,我們可以用annotate()函數指示出最高體溫的位置,并添加 “最高體溫” 的注釋。

7. 設置網格線 ——grid()函數

grid()函數用于為圖表添加網格線,使數據的讀取更方便。例如plt.grid(color='0.5', linestyle='--', linewidth=1)可以添加灰色、虛線、線寬為 1 的網格線。通過axis參數可以控制網格線的方向,如axis='x'只顯示 x 軸網格線。

8. 設置參考線 ——axhline()axvline()等函數

  1. axhline()axvline()函數分別用于繪制水平和垂直參考線,無需指定起止點,默認貫穿整個圖表。
  2. hlines()vlines()函數也用于繪制參考線,但需要指定起止點。

例如,plt.axhline(y=36.5, color='r', linestyle='--')可以添加一條 y=36.5 的紅色虛線作為水平參考線,表示體溫的平均值。

9. 選取范圍 ——axhspan()axvspan()函數

這兩個函數用于在圖表中標記出特定的范圍:

  1. axhspan(ymin, ymax, facecolor, alpha)用于繪制水平選取范圍,yminymax為 y 軸范圍的最小值和最大值。
  2. axvspan(xmin, xmax, facecolor, alpha)用于繪制垂直選取范圍,xminxmax為 x 軸范圍的最小值和最大值。

例如,axhspan(36.5, 37, facecolor='yellow', alpha=0.3)可以標記出體溫在 36.5 到 37 度之間的區域。

10. 圖表的布局 ——tight_layout()函數

tight_layout()函數用于自動調整圖表的布局,避免元素之間的重疊,使圖表更美觀。只需在顯示圖表前調用plt.tight_layout()即可。

11. 保存圖表 ——savefig()函數

savefig()函數用于將圖表保存為圖片文件,語法為plt.savefig('image.png'),其中'image.png'為保存的文件名和格式,支持 png、jpg、pdf 等多種格式。需要注意的是,savefig()函數應放在show()函數之前,否則可能保存為空圖片。

三、繪制常用的圖表

Matplotlib 支持多種類型的圖表,下面我們介紹一些常用圖表的繪制方法。

1. 散點圖 ——scatter()函數

散點圖用于展示兩個變量之間的關系,scatter()函數的語法為:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, ...)

  1. xy為數據點的坐標。
  2. s為標記的大小,c為標記的顏色。
  3. marker為標記的樣式。

例如,我們可以用散點圖分析銷售收入與廣告費的相關性,通過觀察點的分布判斷兩者是否存在正相關或負相關關系。

2. 折線圖 ——plot()函數

折線圖常用于展示數據隨時間或其他連續變量的變化趨勢,我們可以用plot()函數繪制。例如,繪制學生語數外各科成績的折線圖,對比不同學生的成績差異和各科的整體表現。

3. 柱形圖 ——bar()函數

柱形圖用于比較不同類別數據的大小,bar()函數的語法為:

matplotlib.pyplot.bar(x, height, width, bottom=None, align='center', ...)

  1. x為 x 軸的類別數據。
  2. height為柱子的高度(y 軸數據)。
  3. width為柱子的寬度。

我們可以繪制簡單的柱形圖展示單一類別數據,也可以繪制多柱形圖對比不同平臺、不同年份的數據,例如 2016—2022 年各平臺圖書銷售額分析圖。

4. 直方圖 ——hist()函數

直方圖用于展示數據的分布情況,hist()函數的語法為:

matplotlib.pyplot.hist(x, bins=None, range=None, density=None, ...)

  1. x為要分析的數據集。
  2. bins為統計數據的區間分布。
  3. densityTrue時顯示頻率分布,False時顯示頻數分布。

例如,用直方圖分析學生數學成績的分布情況,觀察成績集中在哪個分數段。

5. 餅形圖 ——pie()函數

餅形圖用于展示各部分占總體的比例,pie()函數的語法為:

matplotlib.pyplot.pie(x, explode=None, labels=None, autopct=None, ...)

  1. x為各部分的比例數據。
  2. explode用于設置某部分離中心的距離,突出顯示該部分。
  3. labels為各部分的標簽。
  4. autopct用于設置百分比的顯示格式。

我們可以繪制基礎餅形圖、分裂餅形圖(突出某一部分)、帶陰影的餅形圖,還可以繪制環形圖和內嵌環形圖,例如分析 2023 年 1 月各省銷量占比情況。

6. 面積圖 ——stackplot()函數

面積圖用于展示數據的累積趨勢,stackplot()函數可以繪制標準面積圖和堆疊面積圖。堆疊面積圖能同時展示多個數據系列的變化趨勢和總體的變化,例如分析 2016—2022 年線上各平臺圖書銷售情況。

7. 箱形圖 ——boxplot()函數

箱形圖用于展示數據的分布特征,包括中位數、四分位數、異常值等,boxplot()函數的語法為:

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, ...)

通過箱形圖,我們可以快速判斷數據的分布是否對稱、是否存在異常值。例如,分析客人總消費數據中的異常值,異常值的判斷標準為:大于Q3 + 1.5(Q3 - Q1)或小于Q1 - 1.5(Q3 - Q1)(其中 Q1 為下四分位數,Q3 為上四分位數)。

8. 熱力圖 ——imshow()函數

熱力圖通過顏色的深淺展示數據的大小差異,適合展示矩陣形式的數據。例如,用熱力圖對比分析學生各科成績,顏色越深表示成績越高,直觀呈現學生的優勢和劣勢科目。

9. 雷達圖 ——polar()函數

雷達圖用于展示多個維度的數據,將各維度的數據繪制在極坐標上,形成多邊形,便于比較整體水平和各部分的關系。例如,分析男生女生各科平均成績的差異,判斷不同性別的學生在科目上的優勢差異。

10. 氣泡圖 ——scatter()函數

氣泡圖是散點圖的擴展,通過氣泡的大小表示第三個變量的值。例如,分析成交商品件數與訪客數的關系,氣泡越大表示銷售額越高。

11. 棉棒圖 ——stem()函數

棉棒圖用于繪制離散有序的數據,在每個 x 位置繪制從基線到 y 的垂直線,并在 y 處繪制標記。例如,展示某組離散數據的分布情況。

12. 誤差棒圖 ——errorbar()函數

誤差棒圖用于展示數據的誤差范圍,在折線圖或散點圖的基礎上添加誤差線。例如,繪制帶誤差的實驗數據,展示數據的不確定性。

總結

我們介紹了?Matplotlib 模塊的基礎知識,包括模塊的概述、安裝方法,圖表的基本設置(如畫布、坐標軸、標題、圖例等),以及 12 種常用圖表的繪制方法。在實際應用中,我們可以根據數據特點和分析需求選擇合適的圖表類型,并通過調整各種參數使圖表更美觀、信息更完整。

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

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

相關文章

LeetCode 3169.無需開會的工作日:排序+一次遍歷——不需要正難則反,因為正著根本不難

【LetMeFly】3169.無需開會的工作日:排序一次遍歷——不需要正難則反,因為正著根本不難 力扣題目鏈接:https://leetcode.cn/problems/count-days-without-meetings/ 給你一個正整數 days,表示員工可工作的總天數(從第…

VUE3 el-table 主子表 顯示

在Vue 3中,實現主子表(主從表)的顯示通常涉及到兩個組件:一個是主表(Master Table),另一個是子表(Detail Table)。我們可以使用el-table組件來實現這一功能。這里&#x…

張量數值計算

一.前言前面我們介紹了一下pytorch還有張量的創建,而本章節我們就來介紹一下張量的計算,類型轉換以及操作,這個是十分重要的,我們的學習目標是:掌握張量基本運算、掌握阿達瑪積、點積運算 掌握PyTorch指定運算設備。Py…

部署項目頻繁掉線-----Java 進程在云服務器內存不足被 OOM Killer 頻繁殺死-----如何解決?

一、查詢系統日志grep -i "java" /var/log/messages執行這條命令,檢查系統日志里是否有 Java 進程被 OOM Killer 殺死的記錄。日志中反復出現以下內容:Out of memory: Killed process 3679325 (java) total-vm:2947000kB, anon-rss:406604kB..…

【保姆級教程】基于anji-plus-captcha實現行為驗證碼(滑動拼圖+點選文字),前后端完整代碼奉上!

前言 驗證碼作為Web應用的第一道安全防線,其重要性不言而喻。但你是否還在為以下問題煩惱: 傳統字符驗證碼用戶體驗差,識別率低?驗證碼安全性不足,輕易被爬蟲破解?前后端對接繁瑣,集成效率低&…

HTML-八股

1、DOM和BOM DOM是表示HTML或者XML文檔的標準的對象模型,將文檔中每個組件(元素、屬性等)都作為一個對象,使用JS來操作這個對象,從而動態改變頁面內容,結合等。 DOM是以樹型結構組織文檔內容,樹…

ADI的EV-21569-SOM核心板和主板轉接卡的鏈接說明

ADI提供給客戶很多DSP的核心板,比如EV-21569-SOM,EV-21593-SOM,EV-SC594-SOM等,非常多,但是沒有底板,光一個核心板怎么用呢?于是我就在想,我的21569評估板就有通用底板,能…

基于 Redisson 實現分布式系統下的接口限流

在高并發場景下,接口限流是保障系統穩定性的重要手段。常見的限流算法有漏桶算法、令牌桶算法等,而單機模式的限流方案在分布式集群環境下往往失效。本文將介紹如何利用 Redisson 結合 Redis 實現分布式環境下的接口限流,確保集群中所有節點的…

ubuntu播放rosbag包(可鼠標交互)

1 前言 眾所周知,ubuntu中播放bag包最主要的工具是rviz,然而rviz有一個無法忍受的缺陷就是不支持鼠標回滾,并且顯示的時間的ros時間,不是世界時間,因此在遇到相關bug時不能與對應的世界時間對應。基于以上&#xff0c…

一文理解緩存的本質:分層架構、原理對比與實戰精粹

📖 推薦閱讀:《Yocto項目實戰教程:高效定制嵌入式Linux系統》 🎥 更多學習視頻請關注 B 站:嵌入式Jerry 一文理解緩存的本質:分層架構、原理對比與實戰精粹 “緩存讓系統飛起來”——但每一層緩存有何不同?…

【離線數倉項目】——電商域DIM層開發實戰

摘要本文主要介紹了電商域離線數倉項目中DIM層的開發實戰。首先闡述了DIM層的簡介、作用、設計特征、典型維度分類以及交易支付場景下的表示例和客戶維度表設計。接著介紹了DIM層設計規范,包括表結構設計規范、數據處理規范以及常見要求規范。然后詳細講解了DIM層的…

Unreal Engine 自動設置圖像

void UYtGameSettingSubsystem::RunHardwareBenchmark(int32 WorkScale, float CPUMultiplier, float GPUMultiplier) {UGameUserSettings* UserSettings UGameUserSettings::GetGameUserSettings();if (UserSettings){// 運行基準測試(異步操作,可能需…

使用Spring Boot和PageHelper實現數據分頁

在Spring Boot項目中&#xff0c;利用PageHelper插件可以輕松實現數據分頁功能。以下是具體的實現步驟和代碼示例。添加依賴在項目的pom.xml文件中添加PageHelper和MyBatis的依賴。<dependency><groupId>com.github.pagehelper</groupId><artifactId>p…

【IT-Infra】從ITIL到CMDB,配置管理,資產管理,物理機與設備管理(含Infra系列說明)

【IT-Infra】從ITIL到CMDB&#xff0c;配置管理&#xff0c;資產管理&#xff0c;物理機與設備管理&#xff08;含Infra系列說明&#xff09; 文章目錄序&#xff1a;Infra系列說明1、ITIL 信息技術基礎架構庫&#xff08;起源&#xff09;2、CMDB 配置管理數據庫&#xff08;I…

vue使用printJS實現批量打印及單個打印 避免空白頁

本文介紹了使用print-js庫實現批量打印功能的實現方法。通過安裝print-js依賴后,創建一個batchPrintAction方法,該方法接收選中行數據,生成包含多個標簽頁的HTML字符串。每個標簽頁以表格形式展示6個數據字段,并設置了80mm50mm的標簽尺寸。方法使用PrintJS進行打印,配置了…

C++ 選擇排序、冒泡排序、插入排序

選擇排序&#xff1a;是一種簡單直觀的排序算法&#xff0c;每次均是選擇最小&#xff08;大&#xff09;的元素進行排序。選擇排序算法思想&#xff1a;1 在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置2 再從剩余未排序元素中繼…

Linux入門篇學習——Linux 編寫第一個自己的命令,make 工具和 makefile 文件

目錄 一、Linux 編寫第一個自己的命令 1.命令的概念 2.定義一個自己的命令 二、make 工具和 makefile 文件 1.使用 make 工具 2.makefile文件 一、Linux 編寫第一個自己的命令 1.命令的概念 命令就是可執行程序。 比如說我們輸入 ls -al &#xff0c;ls 就是可執行程序的…

實驗一 接蘋果

主要步驟蘋果樹制作&#xff08;蘋果與籃子的制作同理&#xff09;為蘋果添加標簽相機位置設置與游戲面板長寬比設置&#xff08;16:9&#xff09;蘋果下落設置&#xff08;將蘋果從平拋運動改為垂直下落&#xff09;通過設置物理圖層并更改碰撞矩陣表實現通過PlayerPrefs實現游…

Nginx服務器集群:橫向擴展與集群解決方案

橫向擴展&#xff1a;基礎概念 在深入了解Nginx的橫向擴展細節之前&#xff0c;首先理解橫向擴展的含義及其重要性。橫向擴展是指通過增加服務器數量來分散負載并提升整體性能。這與縱向擴展形成對比&#xff0c;縱向擴展是指在單個服務器上增加更多資源&#xff08;如CPU、內…

缺陷的生命周期(Bug Life Cycle)是什么?

一、缺陷生命周期的定義缺陷生命周期是指一個Bug從被發現到最終關閉的完整流程&#xff0c;反映了缺陷在不同角色&#xff08;測試、開發、產品等&#xff09;間的流轉狀態。它是軟件測試流程的核心管理模型&#xff0c;直接影響團隊協作效率。二、標準缺陷生命周期階段以下是通…