MATLAB学习笔记(六)——数据可视化

7.1 二维图形

7.1.1 直角坐标系绘图

1.plot()函数

(1)包含两个输入参数的plot()函数

基本运用格式:plot(X,Y):

a.当X,Y都是实数向量时,它们必须都为同为向量。

X = 0:pi/100:2*pi;
Y = cos(X)+sin(X);
plot(X,Y);

绘制参数方面时:
{ x = c o s t y = s i n t \begin{cases} x=cost\\y=sint \end{cases} { x=costy=sint

t=0:pi/100:2*pi;
X=cos(t);
Y=2*sin(t);
plot(X,Y)

b.若plot的参数都是复数向量,则X,Y的虚部都会被忽略。

c.若X,Y为实数矩阵,它们必须为同型矩阵。

(2)仅包含一个输入参数的plot()函数

  • 若Y为实数向量,则plot(Y)以Y的下标为横坐标,以Y为纵坐标
  • 若Y为实数矩阵,设Y的列数为M,则plot(Y)等价于plot(Y(:,k)),k=1,2,3…M
  • 若Y为复数向量,Y的实部为横坐标,虚部为纵坐标
  • 若Y为复数矩阵,每列的实部为横坐标,虚部为纵坐标

(3)含多个输入参数的plot()函数

输入多个参数时,必须要按照成对输入参数

2.plotyy()函数

如果需要需要在同一个坐标系下绘制两个具有不同纵坐标标度的图形,可以使用plotxy()函数。

调用形式:plotyy(X1,Y2,X2,Y2)

例:需要绘制下列两个函数,且使用不同的纵坐标刻度
y = e − x y = c o s x y=e^{-x}\\ y=cosx y=exy=cosx

clear;
clc;
t=0:0.01:2*pi;
y1=exp(-t);
y2=cos(t);
plotyy(t,y1,t,y2)

注意,由于兼容性问题,2016版本后便不推荐使用,推荐yyaxis

3.对函数自适应采样的绘图函数fplot()

fplot()可以根据函数在绘图区间内的变化进行自适应采样的绘图函数。

调用形式:fplot(function_name,[tol],[n])

例题:用fplot函数绘制f(x)=sin(tan(x))的图像:

fun=@(x)sin(tan(x));
fplot(fun,[1,2],1e-4)

4.含选项的绘图软件

MATLAB运行绘图函数包含一些绘图选项,这些选项可用于设定所绘曲线的线条类型,画线用的颜色和数据点标记符号等等

(1)线型选项

选项 - : -,
线型 实线 双划线 虚线 点划线

(2)颜色选项

选项 r g b c
颜色 红色 绿色 蓝色 青色
选项 m y k w
颜色 品红色 黄色 黑色 白色

(3)标记符号选项

选项 + o * . x
标记符号 加号 小圆圈 星号 实点 交叉号
选项 d ^ v > <
标记符号 棱形 向上三角形 向下三角形 向右三角形 向左三角形
选项 s h P
标记符号 正方形 正六角星 正五角星

调用形式:plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)

例题:用不同的线型和颜色在同一坐标内绘制曲线y=5*exp(-x).cos(10x)及其包络线

x=0:pi/100:4;
y1=5*exp(-x).*cos(10*x);
y2=[1;-1]*5*exp(-x);
x1=(0:12)*pi/10;
y3=5*exp(-x1).*cos(10*x1);
plot(x,y1,'r-',x,y2,'b:',x1,y3,'ko');

同样的用法也可以用在fplot方程里。

7.1.2 其他坐标系绘图

1.极坐标绘图

在极坐标系中绘图可以采用polar命令,该命令接受极坐标形式的函数.

pplar(theta,rho,选项)

例题:在极坐标系下绘制极坐标方程的曲线 ρ = s i n θ c o s θ \rho=sin\theta cos\theta ρ=sinθcosθ

theta=0:0.01:2*pi;
rho=sin(theta).*cos(theta);
polar(theta,rho,'r')

2.对数坐标系绘图

无论是直角坐标系还是极坐标系,坐标轴都是线性刻度。在很多工程应用里,数据呈指数型变化规律,这时如果再用线型刻度来描述曲线。

(1)semilogx函数

semilogx函数在x轴上常采用对数坐标(以10为底)而y轴采用线性坐标,该函数的调用形式和plot基本相同。

例题:绘制y=lgx的x轴半对数坐标图,并与直角坐标图进行对比。

clear;
clc;
x=0:0.1:5;
y=log10(x);
subplot(1,2,1);%图形窗口分割
plot(x,y,'b');
title('plot绘图');
subplot(1,2,2);
semilogx(x,y,'r');
title('semilogx绘图');

(2)semilogy函数

semilogy函数在绘图时y轴采用常用对数坐标(以10为底),而x轴采用线性坐标。该函数的调用形式与semilogx函数完全相同

(3)loglog函数

loglog()函数在调用时,x轴,y轴上都采用常用对数坐标。调用格式与semilogx函数完全相同

7.1.3 二维特殊图形绘制函数

函数名 说明 函数名 说明
area 填充绘图 hist 直方图
bar 柱状图 pie 饼图
barh 水平柱状图 scatter 散射图
feather 矢量图 stem 杆状图
fill 多边形填充 staris 阶梯图
compass 矢量图 rose 极坐标系柱状图

1.bar函数

(1)bar(y):

若y是向量,则该函数为y中每一个元素画一个长柱,长柱的高度即为元素值大小,横坐标是向量元素的下标。

(2)bar(x,y,style),style为两种模式。即group与stack模式。

x=[-1,1,3];
y=[1,1.5;2,1;3,5];
subplot(1,2,1);%窗口图形分割
bar(x,y);%直方图绘图
title('group模式');
subplot(1,2,2)
bar(x,y,'stacked')
title('stack模式')

注意,如果需要绘制水平函数图,可以使用函数barh,调用方式与bar()相同。

2.hist函数

hist可以绘制二维柱状直方图,用来显示数据的分布情况。调用方式:

(1)hist(y,m):参数m为标量,未指定时默认为10

(2)hist(y,x):参数x为向量。hist函数划分区间时以x的每个元素值为区间中心点,区间的个数为x的长度。

应用示例:

clear;
clc;
x=-5:0.1:5;
y=randn(500,1);
subplot(1,2,1);
hist(y)
title('hist(y)');
subplot(1,2,2);
hist(y,x);
title('hist(y,x)');

同时,利用rose函数可以绘制极坐标系下的直方图。

3.pie函数

pie函数可以绘制二维饼状图

(1)pie(x):pie函数使用x中的数据绘制饼图。

(2)pie(x,explode):参数explode与x具有相同的维度,但与explode的非零值对应的部分会从饼状图中分离出来。

饼状图示例:

x1=[0.1,0.3,0.5];
x2=[0.1,0.3,0.5,0.6];
x3=[1 2 5 6 4];
x4=[1 2 5 6 4;3 7 9 2 3];
explode=[0 0 1 1 0];
subplot(2,2,1);
pie(x1)
title('x1')
subplot(2,2,2);
pie(x2)
title('x2')
subplot(2,2,3);
pie(x3,explode);
title('x3');
subplot(2,2,4);
pie(x4);
title('x4');

4.fill函数

fill函数可以绘制多边形填充图,起点与终点连成多边形。

(1)fill(x,y,color):fill函数用线段依次连接x,y对应的数据点。

(2)fill(x1,y1,color,x2,y2…)根据x1-y1,x2-y2绘制多边形

x=[1 2 3 4 7];
y=[3 7 6 7 4];
fill(x,y,'g');

5.stairs函数

stairs函数可以绘制阶梯状图形,调用格式如下:

(1)stairs(x,y,选项):x为横坐标,y为纵坐标,用阶梯式连接各点

(2)stairs(x):x的下标为横坐标,x的值为纵坐标。

x=0:0.1:5;
m=[1,2,3,4];
y=exp(-x);
subplot(1,2,1);
stairs(x,y,'r');
subplot(1,2,2);
stairs(m);

6.stem函数

stem函数可以绘制火柴杆状的图形

(1)stem(x,y,选项,‘filled’):stem函数用火柴杆表示以x轴为横坐标,y为纵坐标的各个数据点。

(2)stem(x):x的下标为横坐标,x值为纵坐标描述函数。x为矩阵时,含义与plot函数一样。

7.compass函数

(1)compass(x,y,选项):campass函数用箭头表示向量x和y对应元素表示的矢量

(2)compass(z)

x=linspace(-pi,pi,20);
y=cos(x);
subplot(1,2,1);
compass(x,y,'b');
subplot(1,2,2);
feather(x,y,'r');

matlab还提供了其它绘制矢量的函数,如feather(),区别在于横坐标上等距地绘制矢量,矢量图看起来像鸟的羽毛。

7.2 绘图的辅助

7.2.1图形备注

1.图形标题

使用到了titie函数

2.坐标轴标签

在Matlab中,可以使用到xlabel和ylabel函数给图形添加坐标轴。

3.文本说明

可以使用text函数给图形添加文本说明。

4.图例

可以使用legend函数添加对不同曲线的说明。

示例:

clear;
clc;
x=0:0.1:2*pi;
y1=cos(x);
y2=sin(x);
plot(x,y1,'k',x,y2,'b');
legend('余弦函数','正弦函数','Location','North');
xlabel('X轴','color','r');
ylabel('Y轴','color','r');
text(3*pi/2,cos(3*pi/2),'{\leftarrow}黑色实线');
gtext('{\leftarrow}蓝色虚线');

7.2.2 坐标控制

坐标轴的取值范围和刻度对图形的显示有一定影响。

  • axis([ x m i n , x m a x , y m i n , y m a x x_{min},x_{max},y_{min},y_{max} xmin,xmax,ymin,ymax])去取x轴与y轴的取值范围
  • axis equal:纵,横坐标轴采用等长刻度
  • axis square:使用正方形坐标系
  • axis auto:使用默认设置
  • axis off:取消显示坐标轴
  • axis on:显示坐标轴
  • axis tight:使用数据范围定为坐标轴范围

如果需要给坐标系添加或者取消网格线:

  • grid on:添加网格线
  • grid off:取消网格线

7.2.3 图形保持

  • hold on:保持原有图形
  • hold off:清楚原有图形

7.2.4 图形窗口分隔

使用到函数subplot函数可以切割窗口。

  • subplot(m,n,k)
  • subplot(‘position’,[left bottom width height]):把指定的位置作为当前绘图区,向量元素采用归一化的标称单位,也就是取值范围0~1。

在使用subplot函数后,需要绘制占满整个窗口的图形时,应该先使用clf函数清楚当前图形窗口。

示例:将图形窗口分成多块并在其中绘制正弦,余弦,双曲正弦,双曲余弦。

x=-pi:pi/100:pi;
y1=sin(x);
y2=cos(x);
y3=sinh(x);
y4=cosh(x);
subplot(2,2,1);
plot(x,y1);
title('正弦函数');
subplot(2,4,3);
plot(x,y2);
title('余弦函数');
subplot(2,4,4);
plot(x,y3);
title('双曲正弦函数');
subplot('Position',[0.25,0.1,0.5,0.3]);
plot(x,y4);
title('双曲余弦函数')

7.3 三维绘图

7.3.1 三维曲线图

最基本的三维图形函数为plot3,它将二维函数plot的有关功能扩展到了三维空间。

调用格式:plot( x 1 , y 1 , z 1 , 选 项 1 , x 2 , y 2 , z 2 , 选 项 2 , . . . x_1,y_1,z_1,选项1,x_2,y_2,z_2,选项2,... x1,y1,z1,1,x2,y2,z2,2,...)

例如,绘制空间曲线:
{ x = s i n t y = c o s t z = c o s 2 t \begin{cases} x=sint\\ y=cost\\ z=cos2t\\ \end{cases} x=sinty=costz=cos2t

t=0:pi/100:2*pi;
x=sin(t);
y=cos(t);
z=cos(2*t);
plot3(x,y,z,'p');
title('三维图形');grid;
xlabel('x');
ylabel('y');
zlabel('z');

7.3.2 三维曲面图

1.平面网格坐标矩阵的生成

(1)利用矩阵运算生成

x=a:dx:b;
y=(c:dy:d)';
X=ones(size(y));
Y=y*ones(size(x));

(2)利用meshgrid函数生成

x=a:dx:b;
y=(c:dy:d)';
[X,Y]=meshgrid;

2.绘制三维曲面的函数

MATLAB提供了mesh函数与surf函数来绘制三维曲面。

示例:绘制z=sinx*siny的三维曲面图

x=0:0.01*pi:2*pi;
[x,y]=meshgrid(x);
z=sin(x).*sin(y);
mesh(x,y,z);
xlabel('x-轴'),ylabel('y-轴'),zlabel('z-轴');
title('mesh函数绘制');

3.标准三维曲面

MATLAB同时提供了一些函数用于绘制标准的三维曲面。如sphere函数与cylinder函数分别用于绘制三维曲面柱面。

调用格式:

[x,y,z]=sphere(n)

[x,y,z]=cylinder(R,n)

Guess you like

Origin blog.csdn.net/weixin_51871724/article/details/121581988