MATLAB制作散點圖:從基礎到進階的三種類型講解

一、什么是散點圖

? ? ? ?散點圖是一種用來展示兩個或多個變量之間關系的圖表形式。它可以幫助我們直觀地觀察變量之間是否存在相關性、趨勢或異常值,常用于數據分析的初步探索階段。

二、三種類型散點圖

1.?基本二維散點圖:最簡單、最常用

基本二維散點圖的適用場景

? ? ? ?當你手頭只有兩個連續的數字變量,比如“身高”和“體重”,或者“價格”和“銷量”,想看它們之間有沒有關系時,用這個最合適。

舉個例子:

? ? ? ?你想知道一個人身高越高,是不是體重也越重?那你就畫個散點圖,把“身高”當橫軸,“體重”當縱軸,點一畫上去,圖就出來了。如果點大致排成一條斜線,那就說明:它們有關!

?適用場景總結

  • 觀察趨勢和相關性

  • 檢查是否有異常值

  • 做初步的數據探索

2. 按類別分組著色的散點圖:比較不同“群體”的差異

? 按類別分組著色的散點圖的適用場景

? ? ? ?當你有兩個數值變量(比如“身高”和“體重”),但你還知道每個人是男生還是女生,或者是來自不同城市的。你想對比不同群體在這些數值上的分布,這時候就需要分組著色的散點圖。

舉個例子:

? ? ? ?你把男性的數據點涂成藍色,女性的數據點涂成紅色,一下就能看出:女生更集中在某個區域,男生在哪里分布更廣,等等。

?適用場景總結

  • 分類變量(性別、地區、類型)+ 兩個數值變量

  • 想看不同群體的差異或分布趨勢

  • 非常適合做對比分析

3. 三維散點圖:一次看三個數字變量

三維散點圖的適用場景

? ? ? ?你現在不僅有“身高”和“體重”,還有“年齡”,想看三者之間有沒有關系。這時候就可以用三維散點圖。它比二維圖多了一個維度,可以在空間中呈現點的“走向”。

舉個例子:

? ? ? ?你在一張 3D 圖里看出:隨著年齡增加,身高先升后降,體重慢慢變大——這種復雜的關系,二維圖是看不出來的。

適用場景總結:

  • 同時分析三個數值變量

  • 適合探索復雜的多變量關系

  • 更適合有交互式可視化支持的場景

三種類型散點圖總結

你手上有什么數據?

用哪種散點圖?

兩個數字(例:身高、體重)

基本二維散點圖

兩個數字 + 一個分類(例:性別)

分組著色散點圖

三個數字(例:身高、體重、年齡)

三維散點圖

三、實現繪圖前的數據檢查

針對三種類型的散點圖數據需求

散點圖類型

特別準備事項

基本二維散點圖

確保兩個變量都是數值型

分組著色散點圖

第三個變量(分類)需為字符串或分類類型

三維散點圖

三個變量都需為連續數值型,且無缺失

四、MATLAB繪制相應散點圖

1. 基本二維散點圖繪制

? ? ? 只要兩個數值變量,比如“身高”和“體重”,用最基礎的 scatter() 函數就能搞定。

? ? ? 以下是相關代碼實現:

% 讀取數據并保留原始列名,使得原本中文列名不被修改,以下用調取excel表格為例
data = readtable('散點圖制作.xlsx', 'sheet', 'sheet1', 'VariableNamingRule', 'preserve');
x = data.('身高');
y = data.('體重');
% 創建圖形窗口
figure('Color', 'w');
% 繪制較小圓點的散點圖,以下數據大小可以按需更改
scatter(x, y, 40, ...  % 點大小改為40(點較小,可以按照需求更改)'MarkerEdgeColor', [0.3 0.5 0.7], ...% 點的邊緣顏色設為藍灰色'MarkerFaceColor', [0.5 0.7 0.9], ...% 點的填充顏色為淡藍色'MarkerFaceAlpha', 0.6, ...% 點的透明度設置為 0.6'LineWidth', 0.6);  % 線條粗細
hold on
% 擬合數據后,添加趨勢線(淺紅虛線)
p = polyfit(x, y, 1);
yfit = polyval(p, x);
plot(x, yfit, '--', 'Color', [1 0.4 0.4], 'LineWidth', 1.5);% 顏色粗細也均可更改
% 標簽和標題字體大小與類型(字體略小,可自我調整)
xlabel('身高 (cm)', 'FontSize', 11,'FontWeight', 'bold','FontName', '宋體')
ylabel('體重 (kg)', 'FontSize', 11,'FontWeight', 'bold','FontName', '宋體')
title('身高與體重的關系', 'FontSize', 13, 'FontWeight', 'bold','FontName', '宋體')
% 圖例(去邊框,略小字體)
legend({'數據點', '趨勢線'}, 'Location', 'southeast', 'Box', 'off', 'FontSize', 10)
% 網格和坐標軸美化
grid on
box off
set(gca, 'FontSize', 10, 'LineWidth', 1, 'TickDir', 'out')

散點圖實現:

?2. 按類別分組著色的散點圖繪制

? ? ? ? 需要有兩個數值變量,比如“身高”和“體重”,再加上一個分類變量(比如“性別”),就可以通過循環搭配 scatter() 函數,輕松畫出按類別分組著色的散點圖。不同類別的數據點用不同顏色區分,既直觀又美觀,適合展示各類數據在二維數值變量上的分布差異。

? ? ? ? 以下是相關代碼實現:

% 讀取數據并保留原始列名,使得原本中文列名不被修改
data = readtable('散點圖制作.xlsx', 'sheet', 'sheet2', 'VariableNamingRule', 'preserve');
x = data.('身高');
y = data.('體重');
group = data.('性別');  % 分類變量提取,按照實際情況修改
% 獲取唯一類別標簽
groups = unique(group);
colors = lines(length(groups));  
% 創建圖形窗口
figure('Color', 'w');
hold on;
% 按類別繪制散點圖并添加擬合線
for i = 1:length(groups)idx = strcmp(group, groups{i});  % 當前類別的數據索引% 繪制較小圓點的散點圖,以下數據大小可以按需更改scatter(x(idx), y(idx), 40, ...'MarkerEdgeColor', [0.2 0.2 0.2], ...'MarkerFaceColor', colors(i, :), ...'MarkerFaceAlpha', 0.6, ...'LineWidth', 0.6, ...'DisplayName', groups{i});  % 設置圖例% 擬合線(每組單獨)p = polyfit(x(idx), y(idx), 1);           xfit = linspace(min(x(idx)), max(x(idx)), 100);  yfit = polyval(p, xfit);                  plot(xfit, yfit, '--', ...'Color', colors(i, :), ...'LineWidth', 1.5, ...'DisplayName', [groups{i} ' - 擬合線']); 
end
% 坐標軸標簽和標題(字體可按需修改)
xlabel('身高 (cm)', 'FontSize', 11, 'FontWeight', 'bold', 'FontName', '宋體')
ylabel('體重 (kg)', 'FontSize', 11, 'FontWeight', 'bold', 'FontName', '宋體')
title('不同性別的身高與體重關系(含趨勢線)', 'FontSize', 13, 'FontWeight', 'bold', 'FontName', '宋體')
% 圖例
legend('Location', 'southeast', 'Box', 'off', 'FontSize', 10)
% 網格和坐標軸美化
grid on
box off
set(gca, 'FontSize', 10, 'LineWidth', 1, 'TickDir', 'out')

散點圖實現:

3. 三維散點圖的繪制

? ? ? ?需要有三個數值變量,比如“身高”、“體重”和“年齡”,再加上一個分類變量(比如“性別”),就可以通過循環搭配 scatter3() 函數,輕松繪制出按類別分組著色的三維散點圖。不同類別的數據點用不同顏色標識,在三維空間中直觀展示出變量之間的立體分布關系,特別適合用來觀察多變量之間的聯合趨勢與類別間的結構差異。

? ? ? ? 以下是相關代碼實現:

% 讀取數據并保留原始列名,使得原本中文列名不被修改
data = readtable('散點圖制作.xlsx', 'sheet', 'sheet3', 'VariableNamingRule', 'preserve');
x = data.('身高');
y = data.('體重');
z = data.('年齡');      % 增加的第三個數值變量
group = data.('性別');  % 分類變量
% 類別和顏色
groups = unique(group);
colors = lines(length(groups));
% 圖形窗口
figure('Color', 'w', 'Position', [100 100 800 600]);
hold on;
ax = gca;
ax.Color = [0.97 0.97 0.97];
ax.GridColor = [0.8 0.8 0.8];
ax.GridAlpha = 0.4;
% 繪制三維散點圖,以下數據可以按需修改
for i = 1:length(groups)idx = strcmp(group, groups{i});scatter3(x(idx), y(idx), z(idx), 60, ...'MarkerEdgeColor', [0.3 0.3 0.3], ...'MarkerFaceColor', colors(i,:), ...'MarkerFaceAlpha', 0.7, ...'LineWidth', 0.7, ...'DisplayName', groups{i});
end
% 標簽和標題字體大小與類型(字體略小,可自我調整)
xlabel('身高 (cm)', 'FontSize', 12, 'FontWeight', 'bold', 'FontName', '宋體');
ylabel('體重 (kg)', 'FontSize', 12, 'FontWeight', 'bold', 'FontName', '宋體');
zlabel('年齡 (歲)', 'FontSize', 12, 'FontWeight', 'bold', 'FontName', '宋體');
title('不同性別的身高、體重與年齡三維分布', ...'FontSize', 14, 'FontWeight', 'bold', 'FontName', '宋體');
legend('Location', 'northeastoutside', 'Box', 'off', 'FontSize', 10);
% 美化坐標軸
view(45, 20);
grid on;
box on;
rotate3d on;
axis tight;
set(gca, 'FontSize', 10, 'FontName', '宋體', 'LineWidth', 1, 'TickDir', 'out');
camproj perspective;

散點圖實現:

? ? ? ?通過上面的案例示范,相信大家已經了解了如何利用 MATLAB 繪制不同的散點圖。可視化不僅讓數據更易于理解,也為后續的數據分析和交流打下了良好基礎。如果你也在處理類似的多變量數據,不妨動手試一試,讓圖形為你的分析加分!(如有不對的地方也可以指出哦~)?

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

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

相關文章

模塊方法模式(Module Method Pattern)

🧠 模塊方法模式(Module Method Pattern) 模塊方法模式是一種結構型設計模式,它將復雜的操作分解成一系列相對簡單、獨立且單一職責的模塊。每個模塊負責完成一種具體的操作,其他模塊或系統可以通過調用這些模塊的公開…

Python中的JSON庫,詳細介紹與代碼示例

目錄 1. 前言 2. json 庫基本概念 3. json 的適應場景 4. json 庫的基本用法 4.1 導 json入 模塊 4.2 將 Python 對象轉換為 JSON 字符串 4.3 將 JSON 字符串轉換為 Python 對象 4.4 將 Python 對象寫入 JSON 文件 4.5 從 JSON 文件讀取數據 4.6 json 的其他方法 5.…

網狐旗艦大聯盟組件源碼私測筆記:結構分層、UI重構與本地實操全流程

作為一套衍生于傳統網狐架構的源碼版本,大聯盟這套源碼組件可謂是在經典基礎上進行了深度重塑。與老版死板的框架風格不同,它不僅對界面做了大刀闊斧的重構,還在組件層級的組織上做了優化。本文將基于一整套源碼進行深度解析,強調…

STM32 PulseSensor心跳傳感器驅動代碼

STM32CubeMX中準備工作: 1、設置AD 通道 2、設置一個定時器中斷,間隔時間2ms,我這里采用的是定時器7 3、代碼優化01 PulseSensor.c文件 #include "main.h" #include "PulseSensor/PulseSensor.h"/******************…

C++項目容易犯錯的點

1. 矩陣q要先定義大小&#xff0c;再賦值。不可以直接賦值。下面這種方式是錯誤的Eigen::MatrixXd q&#xff1b;q<<1,2&#xff1b;正確的這樣的&#xff1a; Eigen::MatrixXd q(2,1); q<<1.4, 1.5; 2. 不要重復加載variables.h頭文件&#xff0c;這樣變量會被…

在阿里云 Ubuntu 24.04 上部署 RabbitMQ:一篇實戰指南

前言 RabbitMQ 是業界常用的開源消息中間件,支持 AMQP 協議,易于部署、高可用、插件豐富。本文以阿里云 ECS 上運行的 Ubuntu 24.04 LTS 為例,手把手帶你完成 RabbitMQ 從倉庫配置到運行的全流程,并分享在國內環境下常見的坑與對應解決方案。 環境概況 操作系統:Ubuntu …

【論文筆記】SOTR: Segmenting Objects with Transformers

【題目】&#xff1a;SOTR: Segmenting Objects with Transformers 【引用格式】&#xff1a;Guo R, Niu D, Qu L, et al. Sotr: Segmenting objects with transformers[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2021: 7157-7166. 【網…

MinIO實現https訪問

Windows下實現MinIO的https訪問. 首先需要自己解決證書問題, 這里可以是個人證書 也可以是花錢買的證書. 現在使用個人開發者證書舉例子。 將證書數據解壓到你知道的目錄之下 然后直接使用命令啟動MinIO start minio.exe server --certs-dir D:\xxxxx\tools\certs …

基于 jQuery 實現靈活可配置的輸入框驗證功能

在 Web 表單開發中&#xff0c;輸入框驗證是保障數據準確性和安全性的關鍵環節。無論是用戶注冊、信息提交還是數據錄入場景&#xff0c;都需要對用戶輸入內容進行合法性檢查。本文將介紹如何使用 HTML、CSS 和 jQuery 構建一個可靈活配置的輸入框驗證系統&#xff0c;輕松應對…

Kotlin 04Flow stateIn 和 shareIn的區別

一 Kotlin Flow 中的 stateIn 和 shareIn 一、簡單比喻理解 想象一個水龍頭&#xff08;數據源&#xff09;和幾個水杯&#xff08;數據接收者&#xff09;&#xff1a; 普通 Flow&#xff08;冷流&#xff09;&#xff1a;每個水杯來接水時&#xff0c;都要重新打開水龍頭從…

WebRTC 服務器之SRS服務器概述和環境搭建

1.概述 SRS&#xff08;Simple Realtime Server&#xff09;是一款高性能、跨平臺的流媒體服務器&#xff0c;支持多種協議&#xff0c;包括 RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH 和 GB28181。本文介紹了 SRS&#xff0c;包括其用途、關鍵功能、架構和支持協議。SRS 旨…

Dify - Embedding Rerank

注意&#xff1a;v100顯卡會出現不適配&#xff0c;不推薦使用 1. 安裝 Docker ubuntu 22.04 docker 安裝&使用_ubuntu22.04 安裝docker-CSDN博客 2. 安裝vllm pip install -U xformers torch torchvision torchaudio triton --index-url https://download.pytorch.org/w…

LeetCode:鏈表的中間結點

1、題目描述 給你單鏈表的頭結點 head &#xff0c;請你找出并返回鏈表的中間結點。 如果有兩個中間結點&#xff0c;則返回第二個中間結點。 示例 1&#xff1a; 輸入&#xff1a;head [1,2,3,4,5] 輸出&#xff1a;[3,4,5] 解釋&#xff1a;鏈表只有一個中間結點&#xff…

LabVIEW溫控系統熱敏電阻滯后問題

在 LabVIEW 構建的溫控系統中&#xff0c;熱敏電阻因熱時間常數大&#xff08;2 秒左右&#xff09;產生的滯后效應&#xff0c;致使控溫出現超調與波動。在不更換傳感器的前提下&#xff0c;可從算法優化、硬件調整和系統設計等維度著手解決。 ? 一、算法優化? 1. 改進 PI…

技術犯規計入個人犯規嗎·棒球1號位

在棒球運動中&#xff0c;雖然沒有“技術犯規”這一特定術語&#xff0c;但存在多種違規行為或違反規則的情況&#xff0c;通常會導致判罰或處罰。以下是常見的違規行為及相關規則&#xff1a; 1. 投手違規&#xff08;Balk&#xff09; 定義&#xff1a;投手在壘上有跑壘員時…

Python核心技巧 類與實例:面向對象編程的基石

、核心概念圖解 &#x1f3af; 類 vs 實例 類&#xff1a;對象的藍圖&#xff08;如"汽車設計圖"&#xff09; 實例&#xff1a;類的具體實現&#xff08;如"你的特斯拉Model 3"&#xff09; class MyClass: # 類聲明 count 0 # 類…

協程補充---viewModelScope 相關知識點

viewModelScope.launch 默認在 Dispatchers.Default 線程池執行Dispatchers.Default 是一個后臺線程池&#xff0c;專門用于 CPU 密集型任務如果需要在主線程執行&#xff0c;必須顯式指定 Dispatchers.Main remember 是 Compose 的狀態管理函數(queueMenus) 是依賴項&#xff…

linux stm32mp157 GIC-V2 中斷處理過程分析

/* ** 中斷觸發時&#xff0c;調用的 handle_arch_irq 入口地址。 ** 因為此時&#xff0c;掛接的就是 gic_handle_irq 函數&#xff01;gic_handle_irq 是個全局函數指針&#xff0c; ** static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) ** 它是Lin…

動態指令參數:根據組件狀態調整指令行為

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

直方圖比較

目錄 1、直方圖比較的概念 2、直方圖比較的主要原因 3、典型應用場景 4、基礎直方圖比較 5、多通道直方圖比較 6、實時直方圖檢測 1、直方圖比較的概念 直方圖比較是通過數學方法計算兩個直方圖之間的相似度或差異度的技術。在計算機視覺中&#xff0c;直方圖是對圖像特征…