MATLAB制作散点图:从基础到进阶的三种范例讲解

打印 上一主题 下一主题

主题 1991|帖子 1991|积分 5973

一、什么是散点图

       散点图是一种用来展示两个或多个变量之间关系的图表情势。它可以帮助我们直观地观察变量之间是否存在相关性、趋势或非常值,常用于数据分析的初步探索阶段。
二、三种范例散点图

1. 根本二维散点图:最简朴、最常用

根本二维散点图的实用场景

       当你手头只有两个连续的数字变量,比如“身高”和“体重”,或者“代价”和“销量”,想看它们之间有没有关系时,用这个最符合。
举个例子:
       你想知道一个人身高越高,是不是体重也越重?那你就画个散点图,把“身高”当横轴,“体重”当纵轴,点一画上去,图就出来了。如果点大抵排成一条斜线,那就阐明:它们有关!
 实用场景总结



  • 观察趋势和相关性
  • 检查是否有非常值
  • 做初步的数据探索
2. 按种别分组着色的散点图:比力不同“群体”的差异

  按种别分组着色的散点图的实用场景

       当你有两个数值变量(比如“身高”和“体重”),但你还知道每个人是男生照旧女生,或者是来自不同都会的。你想对比不同群体在这些数值上的分布,这时候就需要分组着色的散点图。
举个例子:
       你把男性的数据点涂成蓝色,女性的数据点涂成红色,一下就能看出:女生更会合在某个区域,男生在哪里分布更广,等等。
 实用场景总结



  • 分类变量(性别、地区、范例)+ 两个数值变量
  • 想看不同群体的差异或分布趋势
  • 非常得当做对比分析
3. 三维散点图:一次看三个数字变量

三维散点图的实用场景

       你现在不仅有“身高”和“体重”,还有“年事”,想看三者之间有没有关系。这时候就可以用三维散点图。它比二维图多了一个维度,可以在空间中呈现点的“走向”。
举个例子:
       你在一张 3D 图里看出:随着年事增加,身高先升后降,体重逐步变大——这种复杂的关系,二维图是看不出来的。
实用场景总结:



  • 同时分析三个数值变量
  • 得当探索复杂的多变量关系
  • 更得当有交互式可视化支持的场景
三种范例散点图总结

   
你手上有什么数据?

  
用哪种散点图?

  
两个数字(例:身高、体重)

  
根本二维散点图

  
两个数字 + 一个分类(例:性别)

  
分组着色散点图

  
三个数字(例:身高、体重、年事)

  
三维散点图

  三、实现绘图前的数据检查

针对三种范例的散点图数据需求

散点图范例

特别预备事项

根本二维散点图

确保两个变量都是数值型

分组着色散点图

第三个变量(分类)需为字符串或分类范例

三维散点图

三个变量都需为连续数值型,且无缺失

四、MATLAB绘制相应散点图

1. 根本二维散点图绘制

      只要两个数值变量,比如“身高”和“体重”,用最基础的 scatter() 函数就能搞定。
      以下是相关代码实现:
  1. % 读取数据并保留原始列名,使得原本中文列名不被修改,以下用调取excel表格为例
  2. data = readtable('散点图制作.xlsx', 'sheet', 'sheet1', 'VariableNamingRule', 'preserve');
  3. x = data.('身高');
  4. y = data.('体重');
  5. % 创建图形窗口
  6. figure('Color', 'w');
  7. % 绘制较小圆点的散点图,以下数据大小可以按需更改
  8. scatter(x, y, 40, ...  % 点大小改为40(点较小,可以按照需求更改)
  9.     'MarkerEdgeColor', [0.3 0.5 0.7], ...% 点的边缘颜色设为蓝灰色
  10.     'MarkerFaceColor', [0.5 0.7 0.9], ...% 点的填充颜色为淡蓝色
  11.     'MarkerFaceAlpha', 0.6, ...% 点的透明度设置为 0.6
  12.     'LineWidth', 0.6);  % 线条粗细
  13. hold on
  14. % 拟合数据后,添加趋势线(浅红虚线)
  15. p = polyfit(x, y, 1);
  16. yfit = polyval(p, x);
  17. plot(x, yfit, '--', 'Color', [1 0.4 0.4], 'LineWidth', 1.5);% 颜色粗细也均可更改
  18. % 标签和标题字体大小与类型(字体略小,可自我调整)
  19. xlabel('身高 (cm)', 'FontSize', 11,'FontWeight', 'bold','FontName', '宋体')
  20. ylabel('体重 (kg)', 'FontSize', 11,'FontWeight', 'bold','FontName', '宋体')
  21. title('身高与体重的关系', 'FontSize', 13, 'FontWeight', 'bold','FontName', '宋体')
  22. % 图例(去边框,略小字体)
  23. legend({'数据点', '趋势线'}, 'Location', 'southeast', 'Box', 'off', 'FontSize', 10)
  24. % 网格和坐标轴美化
  25. grid on
  26. box off
  27. set(gca, 'FontSize', 10, 'LineWidth', 1, 'TickDir', 'out')
复制代码
散点图实现:


 2. 按种别分组着色的散点图绘制

        需要有两个数值变量,比如“身高”和“体重”,再加上一个分类变量(比如“性别”),就可以通过循环搭配 scatter() 函数,轻松画出按种别分组着色的散点图。不同种别的数据点用不同颜色区分,既直观又雅观,得当展示各类数据在二维数值变量上的分布差异。
        以下是相关代码实现:
  1. % 读取数据并保留原始列名,使得原本中文列名不被修改
  2. data = readtable('散点图制作.xlsx', 'sheet', 'sheet2', 'VariableNamingRule', 'preserve');
  3. x = data.('身高');
  4. y = data.('体重');
  5. group = data.('性别');  % 分类变量提取,按照实际情况修改
  6. % 获取唯一类别标签
  7. groups = unique(group);
  8. colors = lines(length(groups));  
  9. % 创建图形窗口
  10. figure('Color', 'w');
  11. hold on;
  12. % 按类别绘制散点图并添加拟合线
  13. for i = 1:length(groups)
  14.     idx = strcmp(group, groups{i});  % 当前类别的数据索引
  15.     % 绘制较小圆点的散点图,以下数据大小可以按需更改
  16.     scatter(x(idx), y(idx), 40, ...
  17.         'MarkerEdgeColor', [0.2 0.2 0.2], ...
  18.         'MarkerFaceColor', colors(i, :), ...
  19.         'MarkerFaceAlpha', 0.6, ...
  20.         'LineWidth', 0.6, ...
  21.         'DisplayName', groups{i});  % 设置图例
  22.     % 拟合线(每组单独)
  23.     p = polyfit(x(idx), y(idx), 1);           
  24.     xfit = linspace(min(x(idx)), max(x(idx)), 100);  
  25.     yfit = polyval(p, xfit);                  
  26.     plot(xfit, yfit, '--', ...
  27.         'Color', colors(i, :), ...
  28.         'LineWidth', 1.5, ...
  29.         'DisplayName', [groups{i} ' - 拟合线']);
  30. end
  31. % 坐标轴标签和标题(字体可按需修改)
  32. xlabel('身高 (cm)', 'FontSize', 11, 'FontWeight', 'bold', 'FontName', '宋体')
  33. ylabel('体重 (kg)', 'FontSize', 11, 'FontWeight', 'bold', 'FontName', '宋体')
  34. title('不同性别的身高与体重关系(含趋势线)', 'FontSize', 13, 'FontWeight', 'bold', 'FontName', '宋体')
  35. % 图例
  36. legend('Location', 'southeast', 'Box', 'off', 'FontSize', 10)
  37. % 网格和坐标轴美化
  38. grid on
  39. box off
  40. set(gca, 'FontSize', 10, 'LineWidth', 1, 'TickDir', 'out')
复制代码
散点图实现:


3. 三维散点图的绘制

       需要有三个数值变量,比如“身高”、“体重”和“年事”,再加上一个分类变量(比如“性别”),就可以通过循环搭配 scatter3() 函数,轻松绘制出按种别分组着色的三维散点图。不同种别的数据点用不同颜色标识,在三维空间中直观展示出变量之间的立体分布关系,特别得当用来观察多变量之间的团结趋势与种别间的结构差异。
        以下是相关代码实现:
  1. % 读取数据并保留原始列名,使得原本中文列名不被修改
  2. data = readtable('散点图制作.xlsx', 'sheet', 'sheet3', 'VariableNamingRule', 'preserve');
  3. x = data.('身高');
  4. y = data.('体重');
  5. z = data.('年龄');      % 增加的第三个数值变量
  6. group = data.('性别');  % 分类变量
  7. % 类别和颜色
  8. groups = unique(group);
  9. colors = lines(length(groups));
  10. % 图形窗口
  11. figure('Color', 'w', 'Position', [100 100 800 600]);
  12. hold on;
  13. ax = gca;
  14. ax.Color = [0.97 0.97 0.97];
  15. ax.GridColor = [0.8 0.8 0.8];
  16. ax.GridAlpha = 0.4;
  17. % 绘制三维散点图,以下数据可以按需修改
  18. for i = 1:length(groups)
  19.     idx = strcmp(group, groups{i});
  20.     scatter3(x(idx), y(idx), z(idx), 60, ...
  21.         'MarkerEdgeColor', [0.3 0.3 0.3], ...
  22.         'MarkerFaceColor', colors(i,:), ...
  23.         'MarkerFaceAlpha', 0.7, ...
  24.         'LineWidth', 0.7, ...
  25.         'DisplayName', groups{i});
  26. end
  27. % 标签和标题字体大小与类型(字体略小,可自我调整)
  28. xlabel('身高 (cm)', 'FontSize', 12, 'FontWeight', 'bold', 'FontName', '宋体');
  29. ylabel('体重 (kg)', 'FontSize', 12, 'FontWeight', 'bold', 'FontName', '宋体');
  30. zlabel('年龄 (岁)', 'FontSize', 12, 'FontWeight', 'bold', 'FontName', '宋体');
  31. title('不同性别的身高、体重与年龄三维分布', ...
  32.     'FontSize', 14, 'FontWeight', 'bold', 'FontName', '宋体');
  33. legend('Location', 'northeastoutside', 'Box', 'off', 'FontSize', 10);
  34. % 美化坐标轴
  35. view(45, 20);
  36. grid on;
  37. box on;
  38. rotate3d on;
  39. axis tight;
  40. set(gca, 'FontSize', 10, 'FontName', '宋体', 'LineWidth', 1, 'TickDir', 'out');
  41. camproj perspective;
复制代码
散点图实现:


       通过上面的案例树模,信赖大家已经了解了如何利用 MATLAB 绘制不同的散点图。可视化不仅让数据更易于明白,也为后续的数据分析和交流打下了良好基础。如果你也在处置惩罚类似的多变量数据,不妨动手试一试,让图形为你的分析加分!(如有不对的地方也可以指出哦~) 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表