对于离散的数据,我们可以使用MATLAB绘制散点图,从图形中分析数据的变化趋势以及相关性。MATLAB的scatter3函数是用于绘制三维的散点图(又称气泡图),今天主要是以官方的帮助文档内容中的实际例子讲解使用scatter函数绘制三维散点图。
1.scatter3函数
scatter3
三维散点图
语法
scatter3(X,Y,Z)
scatter3(X,Y,Z,S)
scatter3(X,Y,Z,S,C)
scatter3(___,'filled')
scatter3(___,markertype)
scatter3(___,Name,Value)
scatter3(ax,___)
h = scatter3(___)
说明
scatter3(X,Y,Z) 在向量 X、Y 和 Z 指定的位置显示圆圈。
scatter3(X,Y,Z,S) 使用 S 指定的大小绘制每个圆圈。
要绘制大小相等的圆圈,请将 S 指定为标量。要绘制具有特定
大小的每个圆,请将 S 指定为向量。
scatter3(X,Y,Z,S,C) 使用 C 指定的颜色绘制每个圆圈。
如果 C 是 RGB 三元组,或者是包含颜色名称的字符向量或字符串,
则使用指定的颜色绘制所有圆圈。
如果 C 是一个三列矩阵,其中 C 中的行数等于 X、Y 和 Z 的长度,
则 C 的每行指定相应圆圈的 RGB 颜色值。
如果 C 是长度与 X、Y 和 Z 的长度相同的向量,则 C 中的值线性
映射到当前颜色图中的颜色。
scatter3(___,'filled') 使用前面的语法中的任何输入参数组合
填充这些圆。
scatter3(___,markertype) 指定标记类型。
scatter3(___,Name,Value) 使用一个或多个名称-值对组参数修改
散点图。
scatter3(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前
坐标区 (gca) 中。选项 ax 可以位于前面的语法中的任何输入参数
组合之前。
h = scatter3(___) 返回 Scatter 对象。在创建散点图后,可使用
h 修改其属性。
2.实例
2.1 创建三维散点图
程序
clc;
clear all;
close all;
rng(40);
data = rand(100,3);
x = data(:,1);
y = data(:,2);
z = data(:,3);
figure(1);
subplot(2,1,1);
scatter3(x,y,z,'b')
xlabel('x');
ylabel('y');
zlabel('z');
subplot(2,1,2);
scatter3(x,y,z,'filled')
xlabel('x');
ylabel('y');
zlabel('z');
运行结果
2.2 改变标记大小和颜色
程序
clc;
clear all;
close all;
x = 1:0.01:5;
y = linspace(1,5,length(x));
z = x.^2 y.^2;
s = 10*rand(1,length(x));
figure;
scatter3(x,y,z,s,'filled')
%改变标记颜色 和大小
[X,Y,Z] = sphere(16);
%sphere - 生成球面,此 MATLAB 函数 生成一个包含 16*16 个面的球面。
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
S = repmat([50,25,10],numel(X),1);
%numel 函数用于求得数组元素的数目
C = repmat([1,2,3],numel(X),1);
s = S(:);
c = C(:);
figure
scatter3(x,y,z,s,c)
view(40,35)
运行结果
2.3 填充标记
程序
clc;
clear all;
close all;
%修改标记
rng(50)
num = 500;
z = linspace(0,8*pi,num);
x = 5*cos(z) rand(1,num);
y = 5*sin(z) rand(1,num);
figure
subplot(1,2,1);
scatter3(x,y,z,'*')
view(-30,10)
subplot(1,2,2);
scatter3(x,y,z,'MarkerEdgeColor','k', 'MarkerFaceColor',[0 .75 .75])
view(-30,10)
figure(2)
tiledlayout(2,1)
ax1 = nexttile;
ax2 = nexttile;
scatter3(ax1,x,y,z,'MarkerFaceColor',[0 .75 .75])
scatter3(ax2,x,y,z,'*')
运行结果
本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。
作 者 | 郭志龙
编 辑 | 郭志龙
校 对 | 郭志龙
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved