首页 > 其他分享 >使用 MATLAB 绘制三维散点图:根据坐标和距离映射点的颜色和大小

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

时间:2024-12-06 10:58:20浏览次数:9  
标签:Fontname 映射 子图 散点图 坐标 大小 雅黑 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 文件

代码:

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');

标签:Fontname,映射,子图,散点图,坐标,大小,雅黑,MATLAB
From: https://blog.csdn.net/subject625Ruben/article/details/144285362

相关文章

  • WRF报错Land Use Dataset ‘‘ not found in VEGPARM.TBL. 解决方案(MATLAB版)
    #WRF模式LandUseDataset''notfoundinVEGPARM.TBL.报错情况最近在使用WRF(-Chem)v4.4.2时,因为需要进行化学场的spinup,涉及到使用之前模拟的结果作为模拟的初始(化学)场,前面real等步骤的执行都无异样,但是正式运行wrf.exe时,很快就出现了停止,查询rsl.erro.0000,出现如下报......
  • 调用matlab用户自定义的function函数时,有多个输出变量只输出第一个变量
        很多朋友在使用matlab时,会使用或自己编辑多个function函数,来满足自己对任务处理的要求,但是在调用function函数时,会出现这个问题:调用matlab用户自定义的function函数时,有多个输出变量只输出第一个变量。    假设我定义的function函数代码如下:function[a,......
  • [原创]CEEMDAN-FTTA-CNN-BiLSTM足球队训练算法FTTA是多变量回归预测 (多输入单输出) M
    [原创]CEEMDAN-FTTA-CNN-BiLSTM足球队训练算法FTTA是多变量回归预测(多输入单输出)Matlab代码目录[原创]CEEMDAN-FTTA-CNN-BiLSTM足球队训练算法FTTA是多变量回归预测(多输入单输出)Matlab代码预测结果评价指标基本介绍程序设计参考资料预测结果评价指标......
  • 【雷达信号分选】自相关函数法分选及Matlab仿真实现
    1、概述    自相关函数法是重频分选中的基础且重要的算法,在分选领域中占据主要地位。许多后续的重频分选算法,如直方图法和PRI变换法等,均是在其基础上进行改进。这些改进方法的核心思想是利用自相关函数对脉冲到达时间(TOA)差值(即DTOA)进行分析,进而提取PRI信息。2、......
  • 基于遗传优化算法的TSP问题求解matlab仿真
    1.程序功能描述基于遗传优化算法的TSP问题求解,分别对四个不同的城市坐标进行路径搜索。2.测试软件版本以及运行结果展示MATLAB2022A版本运行  3.核心程序forij=1:Miters%计算当前迭代周期种群适应度%删除与交叉区域相同元素forj=1:Rcc......
  • 基于Matlab自适应滤波和特征提取的雷达信号分选与去噪方法研究
    随着雷达技术的广泛应用,雷达信号在军事、航空航天、交通监控、气象探测等领域的应用变得越来越重要。然而,雷达信号在传输过程中常常受到多种噪声源的干扰,这些噪声干扰会严重影响信号的质量,从而对目标检测、跟踪、识别等后续处理产生不良影响。因此,如何有效地分选和去噪雷达信号......
  • 端口映射让宿主机之外的局域网也能访问Hyper-V下虚拟机
    如果要让宿主机之外的局域网机器也能实现访问,要做端口映射实现,在宿主机打开命令窗口使用以下命令配置端口映射:#查询端口映射netshinterfaceportproxyshowv4tov4#查询指定IP端口映射netshinterfaceportproxyshowv4tov4|findstr"172.21.162.29"#增加一个端口......
  • MATLAB中物理系统建模仿真介绍
    Simscape是MATLAB提供的一个强大的多域物理系统建模和仿真工具,它允许用户在Simulink环境中创建和模拟复杂的物理系统。Simscape模型可以帮助用户细化需求、设计控制系统、测试嵌入式控制器,并使用数字孪生支持在役运行1. Simscape概述Simscape使用库扩展Simulink,用于对......
  • 基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真
    1.算法仿真效果matlab2022a仿真结果如下(完整代码运行后无水印):  仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要       在现代无线通信系统中,多输入多输出(Multiple-InputMultiple-Output,MIMO)技术是提高频谱效率和数据传输速率的关键。然而......
  • Matlab2023a安装arduino硬件支持包记录
    安装硬件支持包参考教程:账号自行免费注册即可https://blog.csdn.net/Wakatipu1734/article/details/127118473下载好的文件如下 接着复制archives到指定目录,期中教程有一个问题:在下载好安装包后打开应该是install_supportsoftware(参考readme中详细步骤),而不是上述教程......