Skip to content

MATLAB - 散点图

MATLAB - 用于数据可视化的现代散点图

Section titled “MATLAB - 用于数据可视化的现代散点图”

散点图(scatter plot)是探索性数据分析(EDA)的重要工具。它通过显示单个数据点来可视化两个数值变量之间的关系。散点图非常适合识别数据中的趋势、相关性、聚类和异常值。MATLAB 的 scatter 函数是创建这些图的强大而灵活的工具。

创建散点图的核心函数是 scatter。虽然它有许多语法,但最现代和可读的方法是使用名称-值对(name-value pairs)进行自定义。

scatter(x, y, ...)

其中 x 和 y 是长度相同的向量,包含数据点的坐标。其他属性可以指定为名称-值对。

让我们使用一个简单的数据集来探索自定义。

%% 生成样本数据
x = linspace(0, 3*pi, 100);
y = sin(x) + 0.2*randn(1, 100);
figure; % 创建一个新的图窗窗口
scatter(x, y);
title('Basic Scatter Plot');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;

示例 2:自定义标记大小、颜色和样式

Section titled “示例 2:自定义标记大小、颜色和样式”

您可以单独控制每个标记的外观。让我们根据其他数据向量改变标记大小和颜色。

%% 创建用于大小和颜色的附加数据
marker_sizes = randi([10, 80], 1, 100); % 每个点的大小向量
marker_colors = x; % 根据点的 x 值着色
figure;
scatter(x, y, marker_sizes, marker_colors, ...
'Marker', 'o', ... % 使用圆形标记
'MarkerFaceAlpha', 0.6, ... % 使标记半透明
'MarkerEdgeColor', 'k', ... % 标记的黑色边缘
'LineWidth', 1.0); % 更粗的边缘
title('Customized Scatter Plot');
xlabel('X-Value');
ylabel('Y-Value');
cb = colorbar; % 添加颜色条以显示颜色刻度
ylabel(cb, '颜色映射到 X 值'); % 标记颜色条
grid on;

小项目:可视化 Fisher 鸢尾花数据集

Section titled “小项目:可视化 Fisher 鸢尾花数据集”

散点图的常见用途是可视化分组数据。让我们使用内置的 Fisher 鸢尾花数据集,绘制萼片长度(sepal length)与萼片宽度(sepal width)的关系,并按物种(species)着色。这是分类数据可视化的经典示例。

%% 加载数据集
% 这会创建 'meas'(测量值)和 'species'(名称的单元格数组)
load fisheriris;
% 提取相关数据列
x_data = meas(:, 1); % 萼片长度
y_data = meas(:, 2); % 萼片宽度
%% 使用 gscatter 的现代分组散点图
% gscatter 专门为此任务设计,并自动处理
% 颜色、标记和图例。
figure;
gscatter(x_data, y_data, species, 'rgb', 'osd', [], 'on');
title('Fisher 鸢尾花数据集:萼片尺寸');
xlabel('萼片长度 (cm)');
ylabel('萼片宽度 (cm)');
legend('Location', 'best');
grid on;

在创建用于报告或演示的图时,请考虑以下事项:

  • 始终标记坐标轴:没有标签的图是毫无意义的。在适当的地方使用单位。
  • 提供标题:为您的图提供一个描述性标题。
  • 为分组数据使用图例:确保每个组都清晰地标识出来。
  • 可访问性 (a11y):不要仅仅依靠颜色来区分组。使用不同的标记形状(例如,'o'、's'、'd'、'^'),就像 gscatter 所做的那样。这确保了图对于有色觉缺陷的人以及黑白打印时都是可读的。
  • 清晰度:如果数据点密集,请使用透明度(MarkerFaceAlpha)或更小的标记以避免过度绘制。

MATLAB 的现代图形系统允许广泛的自定义。您可以单击绘图窗口中的元素以打开属性编辑器,或使用 set 函数以编程方式控制绘图外观的各个方面。