绘图
%% 绘图
%{
一、二维图形
二维绘图的基本命令有plot,loglog,semilogx,semilogy 和polar。它们的使
用方法基本相同,其不同特点是在不同的坐标中绘制图形。plot 命令使用线性坐标空
间绘制图形;loglog 命令在两个对数坐标空间中绘制图形;而semilogx(或semilogy)
命令使用x 轴(或y 轴)为对数刻度,另外一个轴为线性刻度的坐标空间绘制图形;
polar使用极坐标空间绘制图形。
1、plot使用格式:plot(x,y,'color_point_linestyle')
线色(r-red,g-green,b-blue,w-white,k-black,i-invisible,y-yellow)
数据点(.,o,x,+,*,S,H,D,V,^,>,<,p)
线型(-,-.,--,:)
当 plot(x,y)中的 x 和y均为m× n矩阵时,plot 命令将绘制n条曲线。
plot(t,[x1,x2,x3])在同一坐标轴内同时绘制三条曲线。
如果多重曲线对应不同的向量绘制,可使用命令plot(t1,x1,t2,x2,t3,x3),式中x1 对应t1,x2 对应t2等等。
2、subplot使用格式:subplot(r,c,p)
subplot命令使得在一个屏幕上可以分开显示n个不同坐标系,且可分别在每一个
坐标系中绘制曲线。
该命令将屏幕分成r*c个子窗口,而p 表示激活第p个子窗口。窗口的排号是从左到右,
自上而下。
在图形绘制完毕后,执行如下命令可以再在图中加入标题、标号、说明和分格线等。
这些命令有title,xlabel,ylabel,text,gtext 等
%}
% sin(x)图像
x = (-pi:0.1:pi);
plot(sin(x))
% 极坐标
x = (0:0.01:2*pi);
r=cos(2*x);
polarplot(x,r)
%% 二维散点图
clear,clc
load seamount
whos
subplot(121) % 激活一号窗口(一个界面)
scatter(x,y) % 画散点图
subplot(122) % 激活二号窗口
scatter(x,y,[],z) % []:系统默认散点大小;z:深度表示颜色
close all
figure % 新开辟画图界面
scatter(x,y,20,z,'fill')
xlabel('$x$','Interpreter','Latex')
ylabel('$y$','Interpreter','Latex','Rotation',0)
%% 三维散点图
clear,clc;
load seamount
scatter3(x,y,z,30,z,'fill')
xlabel('$x$','Interpreter','Latex')
ylabel('$y$','Interpreter','Latex')
zlabel('$z$','Interpreter','Latex','Rotation',0)
%% 多分类数据的散点图
% gplotmatrix 可以绘制分组数据变量对之间的散点图
% gscatter 绘制分组数据的散点图
clear, clc;
load fisheriris
whos
% 分类 颜色 形状
gplotmatrix(meas,meas,species,'rgb','sdo')
figure
gscatter(meas(:,3),meas(:,4),species,'rgb','sdo')
xlabel('PetalLength'), ylabel('PetalWidth')
%% plot曲线图和散点图
clear,clc
x = 1:6;
y = rand(1,6);
% plot(x,y,'Color|Linstyle|Marker')
plot(x,y,'r-o') % r:红 -:线 o:点
%% plot和plot3
clear,clc
load seamount
subplot(121), plot(x,y,'ro'), title('二维散点图')
subplot(122), plot3(x,y,z,'bo'), title('三维散点图')
%% 绘制单位圆
clear,clc
t = 0:0.01:2*pi;
x = cos(t);
y = sin(t);
plot(x,y), axis square
figure
x = @(t) cos(t);
y = @(t) sin(t);
fplot(x,y,[0,2*pi]), axis equal
%% 单位圆的内接正八边形
clear, clc
x = @(t) cos(t);
y = @(t) sin(t);
fplot(x,y,[0,2*pi])
t = linspace(0,2*pi,9);
x2 = cos(t);
y2 = sin(t);
hold on
plot(x2,y2), axis equal
%% 三维绘图
%{
1、三维曲线 plot3
2、三维网格 mesh
3、三维表面图 surf
%}
%% 三维螺旋线
clear, clc
x = @(t) t.*cos(t);
y = @(t) t.*sin(t);
z = @(t) t;
fplot3(x,y,z,[0,100])
%% 隐函数绘图
clear,clc
subplot(121)
x = @(t,z) 2*z.*cos(t);
y = @(t,z) sqrt(2)*z.*sin(t);
z = @(t,z) z;
fsurf(x,y,z,[0,2*pi,-5,5])
subplot(122)
f = @(x,y,z)x.^2/4+y.^2/2-z.^2;
interval = [-10,10,-10,10,-5,5];
fimplicit3(f,interval)
%% 莫比乌斯带
clear,clc
x = @(s,t) (2+s/2.*cos(t/2)).*cos(t);
y = @(s,t) (2+s/2.*cos(t/2)).*sin(t);
z = @(s,t) (s/2.*sin(t/2));
fmesh(x,y,z,[-1,1,0,2*pi])
view(-40,60) % 设置视角