基于Matlab的数据可视化

基于Matlab的数据可视化

一、二维图形的绘制

(一)基本图形函数

(1)plot函数

通过线段(折线)来连接给定的点与点的图像

  1. plot(X,Y):创建Y中数据对X中对应值的二维线图
  • 要绘制 由线段连接的 一组坐标 -> 将 X 和 Y 指定为 相同长度 的向量
  • 要在 同一组坐标区上 绘制 多组坐标 -> 将 X 或 Y 中的至少一个指定为 矩阵
matlab 复制代码
% 1
x = 1:9;
y = 2:10;
plot(x,y);

% 2
x = 1:9;
y = x.^2;
plot(x,y);

% 3
x = 1:9;
y = 2:10;
plot(x);

% 4
x = 1:9;
y = 0.1:0.2:1.7;
X = x+y*i;
plot(X);

% 5
t = 0:0.01:2*pi; % 步长越小,对应的曲线就平滑
t = t.';  % 转置:将 行向量 转变为 列向量
% 画出来曲线的条数 == 矩阵的列数
x = [t,t,t];
y = [sin(t),sin(2*t),sin(0.5*t)];
plot(x,y);
1 2 3 4 5
  1. plot(X,Y,LineSpec):使用指定的线型、标记和颜色创建绘图
    plot(X1,Y1,...,Xn,Yn):在同一组坐标区上绘制多对x和y坐标。此语法可替代将坐标指定为矩阵的形式
matlab 复制代码
x1 = linspace(0,2*pi,10);
x2 = linspace(0,2*pi,20);
x3 = linspace(0,2*pi,200);
y1 = sin(x1);
y2 = sin(x2)+2;
y3 = sin(x3)+4;
plot(x1,y1,x2,y2,x3,y3);
  1. plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)
matlab 复制代码
x1 = linspace(0,2*pi,10);
x2 = linspace(0,2*pi,20);
x3 = linspace(0,2*pi,200);
y1 = sin(x1);
y2 = sin(x2)+2;
y3 = sin(x3)+4;
plot(x1,y1,':g',x2,y2,x3,y3);  % : 虚线 g 绿色

(2)fplot函数

matlab 复制代码
% 1
fplot(@(x)sin(1./x),[0,0.2]);

% 2
x = [0:0.005:0.2];
y = sin(1./x);
plot(x,y);

% 3
fplot(@(t)t*sin(t),@(t)t*cos(t),[0,10*pi],'-r');
序号 图像
1
2
3

(3)其他坐标系的二维曲线

  1. 对数坐标图:semilogx( )
matlab 复制代码
x = logspace(-1,2); %生成从0到100的对数间距
y = x;
semilogx(x,y);
  1. 极坐标图:polarplot( )
matlab 复制代码
theta = 0:0.01:2*pi;
rho = sin(theta) .* cos(theta);
polarplot(theta,rho);
  1. 统计图
  • 条形图:bar( )
matlab 复制代码
x = [2021,2022,2023];
y = [10,20;20,30;100,200]; % 对应年份两项指标的打分
bar(x,y);
  • 直方图(质量分布图):histogram( )

matlab 复制代码
% 自动分 bin 算法 (将连续变量离散化处理)
x = randn(1000,1);
nbins = 25;
h = histogram(x,nbins);
counts = h.Values % 每个 bin 中直方图的计数


  • 面积类图:pie( )
matlab 复制代码
x = [1:2:9];
pie(x);
  • 散点类图:scatter( )

matlab 复制代码
t = 0:pi/50:2*pi;
x = 16*sin(t) .^ 3;
y = 13*cos(t) - 5*cos(2*t) -2*cos(3*t) - cos(4*t);
scatter(x,y,'red',"filled");
  • s矢量图:quiver( )
matlab 复制代码
% quiver(X,Y,U,V)在由X和Y指定的笛卡尔坐标上绘制具有定向分量U和V的箭头
% 即起点(X,Y)->终点(U,V)
A = [4,5];
quiver(0,0,A(1),A(2));


matlab 复制代码
A = [4,5]
B = [-10,10]
C = A + B
hold on
quiver(0,0,A(1),A(2))
quiver(0,0,B(1),B(2))
quiver(0,0,C(1),C(2))
title('A向量+B向量的结果')
xlabel('X')
ylabel('Y')
text(A(1),A(2),'A')
text(B(1),B(2),'B')
text(C(1),C(2),'C')
grid on

(二)图形属性设置

(1)线型、标记、颜色




(2)图形标注(支持LaTex中公式、符号的输入)

  1. title(图形标题)
  2. xlabel(x轴说明)
  3. ylabel(y轴说明)
  4. text(x,y,图形说明)
  5. legend(图例1,图例2)

(3)坐标控制

  1. axis( )
  2. 给坐标系加网格和边框

matlab 复制代码
x = linspace(0,2*pi,200);
y = [sin(x);sin(2*x);sin(0.5*x)];
plot(x,y);

axis([0,6.5,-1.5,1.5]);
title('三个正弦函数曲线y=sin{\theta}','FontSize',24);
xlabel('X');
ylabel('Y');
text(2.5,sin(2.5),'sin(x)');
text(2.5,sin(2*2.5),'sin(2x)');
legend('sin(x)','sin(2x)','sin(0.5x)')
  1. 图形保持
matlab 复制代码
t = linspace(0,2*pi,200);
x = sin(t);
y = cos(t);
plot(x,y,'b');
axis equal
hold on
x1 = 2*sin(t);
y1 = 2*cos(t);
plot(x1,y1,'r');

二、三维图形的绘制

(一)三维曲线

(1)plot3( )


matlab 复制代码
t = [0:0.1:10*pi];
x = sin(t) + t .* cos(t);
y = cos(t) - t .* sin(t);
z = t;
plot3(x,y,z);
matlab 复制代码
% 1  sin(x)的三维图
y = t;
plot3(t,y,sin(t));

% 2
t = [0:0.1:10*pi];
t = t.';
x = [t,t,t];
y = [sin(t),sin(t)+2,sin(t)+4];
z = t;
plot3(x,y,z);

% 3  x 与 y 中有的是向量,有的是矩阵
t = [0:0.1:10*pi];
x = t;
y = [sin(t);sin(t)+2;sin(t)+4];
z = t;
plot3(x,y,z);

% 4
t = [0:0.1:10*pi];
plot3(x,sin(t),z,x,sin(t)+2,z,x,sin(t)+4,z);
序号 图像
1
2
3
4

(2)fplot3( )


matlab 复制代码
t = [0:0.1:10*pi];
x = @(t) exp(-t/10) .* sin(5*t);
y = @(t) exp(-t/10) .* cos(5*t);
z = @(t) t;
fplot3(x,y,z,[-12,12],'r');

(二)三维曲面

(1)平面网格数据的生成

  1. 利用矩阵运算生成
  2. 利用meshgrid函数生成
matlab 复制代码
%(1)利用矩阵运算生成
x = [2:6]
y = [3:8]'
X = ones(size(y))*x % 把x拉6行
Y = y*ones(size(x)) % 列在前,行在后

%(2)利用meshgrid函数
x = [2:6]
y = [3:8]'
[X,Y]=meshgrid(x,y)

两个方法结果相同

(2)绘制三维曲面的函数

matlab 复制代码
x = -2:0.2:2;
[X,Y]=meshgrid(x);
Z = X .* exp(-X .^ 2 - Y .^ 2);

%  1
plot3(X,Y,Z);

%  2
mesh(X,Y,Z);

%  3
surf(X,Y,Z);
序号 图像
1
2
3
matlab 复制代码
x = [2:6];
y = [3:8]';
[X,Y] = meshgrid(x,y);
Z = randn(size(X)); % 和X/Y大小一致即可
plot3(X,Y,Z);

三、句柄/窗口的控制

(一)图形对象句柄及属性

(1)对象句柄值的获取

matlab 复制代码
x = 1:10;
y = x .^ 2;
h = plot(x,y);  % 将句柄保存到 h 变量中
h1 = text(5,25,'说明');
h1.FontSize = 24; % 更改图窗中字体大小

(2)对象属性的获取/设置


matlab 复制代码
x = linspace(0,2*pi,100);
y = sin(x);
h = plot(x,y);
get(h);
set(h,'Color','red');

(二)图形窗口的分割

matlab 复制代码
x = linspace(0,2*pi,100);
subplot(2,2,1); % 相当于激活函数
plot(x,sin(x));
title('sin(x)');

subplot(2,2,2);
plot(x,cos(x));
title('cos(x)');

subplot(2,2,3);
plot(x,tan(x));
title('tan(x)');

subplot(2,2,4);
plot(x,cot(x));
title('cot(x)');
matlab 复制代码
x = -1:0.2:2;
[X,Y] = meshgrid(x);
Z = X .* exp(-X .^ 2 - Y .^ 2);

subplot(1,3,1);
plot3(X,Y,Z);

subplot(1,3,2);
mesh(X,Y,Z);

subplot(1,3,3);
surf(X,Y,Z);

相关推荐
大G哥8 分钟前
java提高正则处理效率
java·开发语言
VBA633718 分钟前
VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
开发语言
轩辰~20 分钟前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
小_太_阳29 分钟前
Scala_【1】概述
开发语言·后端·scala·intellij-idea
向宇it30 分钟前
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
开发语言·unity·c#·编辑器·游戏引擎
古希腊掌管学习的神1 小时前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
赵钰老师1 小时前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言
就爱学编程1 小时前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
B站计算机毕业设计超人1 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
Oneforlove_twoforjob2 小时前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存