使用 MATLAB 绘制三维散点图:根据坐标和距离映射点的颜色和大小

在数据可视化中,三维散点图是一种非常直观的方式来展示数据的分布。MATLAB 提供了强大的 scatter3 函数,可以用来绘制三维散点图,而通过调整点的颜色和大小,可以进一步增强图形的表现力。

在本篇博客中,我们将逐步讲解如何使用 MATLAB 读取 Excel 文件中的数据,并绘制四个子图。每个子图中的点的颜色和大小将根据 X、Y、Z 坐标值及其离原点的距离进行映射。让我们一起动手实现这个可视化效果吧!

步骤 1:导入数据

假设我们有一个名为 data.xlsx 的 Excel 文件,其中包含三列数据:X 坐标、Y 坐标和 Z 坐标。这些数据将作为绘图的基础。我们首先使用 MATLAB 的 readtable 函数来导入 Excel 文件中的数据。

步骤 2:计算点的大小

为了使每个点的大小与数据的某些特征相关联,我们可以根据坐标的值或者离原点的距离来调整点的大小。例如,可以将 X、Y、Z 的值映射到点的大小,或者根据每个点到原点的距离来调整大小。

步骤 3:设置颜色映射

MATLAB 的 scatter3 函数允许我们根据数据的值映射点的颜色。在本例中,我们将使用 cool 渐变色来表示不同的数值。cool 渐变色是一种从蓝色到粉色的渐变色,非常适合这种数据映射。

我们可以通过 scatter3 函数的第二个参数来指定每个点的颜色,颜色将根据不同的坐标或距离值进行映射。

步骤 4:绘制图形

接下来,我们将绘制四个子图,每个子图展示不同的映射方式。我们使用 subplot 函数将一个图形窗口分成四个子图。

  • 子图 1:点的颜色根据 X 坐标值映射,点的大小也根据 X 坐标值进行调整。
  • 子图 2:点的颜色根据 Y 坐标值映射,点的大小根据 Y 坐标值进行调整。
  • 子图 3:点的颜色根据 Z 坐标值映射,点的大小根据 Z 坐标值进行调整。
  • 子图 4:点的颜色根据离原点的距离映射,点的大小也根据距离进行调整。

步骤 5:保存图像

在图形完成后,我们可以使用 print 函数将其保存为一个高分辨率的 JPEG 文件

代码:

Matlab 复制代码
clc; 
clear; 
close all; 

%% 导入数据
data = readtable('data.xlsx');  % 读取 Excel 文件
X = data.X;  % X 坐标
Y = data.Y;  % Y 坐标
Z = data.Z;  % Z 坐标

%% 计算距离原点的距离
distance = sqrt(X.^2 + Y.^2 + Z.^2);  % 计算每个点与原点的距离

%% 计算点的大小(可以根据实际需要进行缩放调整)
k=200;
sizeX = X / max(X) * k;  % 根据 X 坐标映射大小
sizeY = Y / max(Y) * k;  % 根据 Y 坐标映射大小
sizeZ = Z / max(Z) * k;  % 根据 Z 坐标映射大小
sizeDistance = distance / max(distance) * k;  % 根据距离映射大小

%% 颜色渐变设置
colormap('cool');  % 使用 cool 渐变色

%% 绘制图形



% 子图 1: 根据 X 映射颜色和大小
ax1 = subplot(221); 
scatter3(X, Y, Z, sizeX, X, 'filled');  % 点的大小根据 X 坐标,颜色根据 X 坐标变化
colormap(ax1, 'cool');  % 使用 cool 渐变色
colorbar;  % 显示颜色条
xlabel('X', 'Fontname', '微软雅黑');
ylabel('Y', 'Fontname', '微软雅黑');
zlabel('Z', 'Fontname', '微软雅黑');
title('根据 X 坐标映射颜色和大小', 'Fontname', '微软雅黑');

% 子图 2: 根据 Y 映射颜色和大小
ax2 = subplot(222); 
scatter3(X, Y, Z, sizeY, Y, 'filled');  % 点的大小根据 Y 坐标,颜色根据 Y 坐标变化
colormap(ax2, 'cool');
colorbar;
xlabel('X', 'Fontname', '微软雅黑');
ylabel('Y', 'Fontname', '微软雅黑');
zlabel('Z', 'Fontname', '微软雅黑');
title('根据 Y 坐标映射颜色和大小', 'Fontname', '微软雅黑');

% 子图 3: 根据 Z 映射颜色和大小
ax3 = subplot(223); 
scatter3(X, Y, Z, sizeZ, Z, 'filled');  % 点的大小根据 Z 坐标,颜色根据 Z 坐标变化
colormap(ax3, 'cool');
colorbar;
xlabel('X', 'Fontname', '微软雅黑');
ylabel('Y', 'Fontname', '微软雅黑');
zlabel('Z', 'Fontname', '微软雅黑');
title('根据 Z 坐标映射颜色和大小', 'Fontname', '微软雅黑');

% 子图 4: 根据离原点的距离映射颜色和大小
ax4 = subplot(224); 
scatter3(X, Y, Z, sizeDistance, distance, 'filled');  % 点的大小根据离原点的距离,颜色也根据距离变化
colormap(ax4, 'cool');
colorbar;
xlabel('X', 'Fontname', '微软雅黑');
ylabel('Y', 'Fontname', '微软雅黑');
zlabel('Z', 'Fontname', '微软雅黑');
title('根据离原点的距离映射颜色和大小', 'Fontname', '微软雅黑');

%% 保存图像
print(gcf, 'scatter_plot_output_with_size.jpg', '-djpeg', '-r900');
相关推荐
SelectDB2 小时前
为什么越来越多分析数据库开始重视实时更新,而不仅仅是查询性能?
大数据·数据库·数据分析
SelectDB2 小时前
为什么今天值得重新比较 Apache Doris 和 StarRocks?
大数据·数据库·数据分析
shujudang2 小时前
B2B 官网获客数据如何与 CRM 线索状态关联
大数据·数据挖掘·数据分析
躺柒4 小时前
读数据可视化16大规模多变量空间数据(下)
人工智能·信息可视化·可视化·数据可视化·空间·大数据分析
X1A0RAN4 小时前
pytest 动态报告:数据可视化篇 —— 用 Golang + Echo 打造自动化测试任务可视化平台
信息可视化·golang·pytest
jkyy20148 小时前
从商品售卖到健康服务,数字化重构大健康品牌会员运营底层逻辑
大数据·人工智能·信息可视化·健康医疗
circuitsosk10 小时前
多智能体协同在能源数据分析中的实践:分配-执行-校验闭环架构设计
python·数据分析·wpf·能源·并行计算·多智能体系统·agent协作
传感器与混合集成电路10 小时前
分布式光纤测温DTS系统:ZDTS-P2000与X1000参数对比及找漏监测应用
分布式·数据分析
matlab代码1 天前
基于matlab的玉米种子计数设计(GUI界面)【源码58期】
开发语言·matlab
RE-19011 天前
电商互联网指标 - 归纳笔记
数据分析·电商指标·互联网指标·业务指标·指标解释