MATLAB - 散点图
MATLAB - 用于数据可视化的现代散点图
Section titled “MATLAB - 用于数据可视化的现代散点图”散点图(scatter plot)是探索性数据分析(EDA)的重要工具。它通过显示单个数据点来可视化两个数值变量之间的关系。散点图非常适合识别数据中的趋势、相关性、聚类和异常值。MATLAB 的 scatter 函数是创建这些图的强大而灵活的工具。
scatter 函数
Section titled “scatter 函数”创建散点图的核心函数是 scatter。虽然它有许多语法,但最现代和可读的方法是使用名称-值对(name-value pairs)进行自定义。
scatter(x, y, ...)其中 x 和 y 是长度相同的向量,包含数据点的坐标。其他属性可以指定为名称-值对。
自定义散点图:示例
Section titled “自定义散点图:示例”让我们使用一个简单的数据集来探索自定义。
%% 生成样本数据x = linspace(0, 3*pi, 100);y = sin(x) + 0.2*randn(1, 100);示例 1:带标签的基本散点图
Section titled “示例 1:带标签的基本散点图”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;最佳实践和可访问性
Section titled “最佳实践和可访问性”在创建用于报告或演示的图时,请考虑以下事项:
- 始终标记坐标轴:没有标签的图是毫无意义的。在适当的地方使用单位。
- 提供标题:为您的图提供一个描述性标题。
- 为分组数据使用图例:确保每个组都清晰地标识出来。
- 可访问性 (a11y):不要仅仅依靠颜色来区分组。使用不同的标记形状(例如,
'o'、's'、'd'、'^'),就像gscatter所做的那样。这确保了图对于有色觉缺陷的人以及黑白打印时都是可读的。 - 清晰度:如果数据点密集,请使用透明度(
MarkerFaceAlpha)或更小的标记以避免过度绘制。
MATLAB 的现代图形系统允许广泛的自定义。您可以单击绘图窗口中的元素以打开属性编辑器,或使用 set 函数以编程方式控制绘图外观的各个方面。