五、MATLAB数据可视化
五、MATLAB数据可视化
5.1 二维图形
5.1.1、绘制二维曲线的基本函数
1.plot函数的基本用法
plot函数的基本调用格式为:
1 | plot(x,y) |
其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。
例1:在0≤X≤2区间内,绘制曲线y=2e-0.5xsin(2πx)。
程序如下:
1 | x=0:pi/100:2*pi; |
例2: 绘制曲线。
程序如下:
1 | t=-pi:pi/100:pi; |
说明:
(1)当x是向量,y是矩阵时,x的长度与矩阵y的行数或列数必须相等。如果x的长度等于y的行数,则以x和y的每列为横、纵坐标绘制曲线,曲线的条数等y的列数。如果x的长度等于y的列数,则以x和y的每行为横、纵坐标绘制曲线,曲线的条数等y的行数。
(2)当x、y是同维矩阵时,则以x、y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。
(3)plot函数最简单的调用格式是只包含一个输入参数:plot(x)。
2.含多个输入参数的plot函数
含多个输入参数的plot函数调用格式为:
1 | plot(x1,y1,x2,y2,…,xn,yn) |
3.含选项的plot函数
含选项的plot函数调用格式为:
1 | plot(x1,y1,选项1,x2,y2, 选项2,…,xn,yn,选项n) |
例3 用不同线型和颜色在同一坐标内绘制曲线
及其包络线。
程序如下:
1 | x=(0:pi/100:2*pi)'; |
4.双纵坐标函数plotyy
plotyy函数是MATLAB 5.X新增的函数。它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为:
plotyy(x1,y1,x2,y2)
其中x1-y1对应一条曲线,x2-y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1-y1数据对,右纵坐标用于x2-y2数据对。
例5-4 用不同标度在同一坐标内绘制曲线
y1=e-0.5xsin(2πx)及曲线y2=sin(x)。
程序如下:
1 | x1=0:pi/100:2*pi; |
5.1.2 绘制图形的辅助操作
1.图形标注
有关图形标注函数的调用格式为:
1 | title(图形名称) |
2.坐标控制
函数的调用格式为:
1 | axis([xmin xmax ymin ymax zmin zmax]) |
例5 绘制分段函数曲线并添加图形标注
1 | >> x=linspace(0,10,100); |
3.图形保持
一般情况下,绘图命令每执行一次就刷新当前图形窗口,图形窗口原有图形将不复存在。若希望在已存在的图形上再继续添加新的图形,可使用图形保持命令hold。hold on/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。
例5-6 用图形保持功能在同一坐标内绘制曲线)及其包络线。
1 | x=(0:pi/100:2*pi)'; |
4.图形窗口的分割
subplot函数的调用格式为:
subplot(m,n,p)
例5-7 在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。
1 | x=linspace(0,2*pi,60); |
5.2 其他形式的二维图形
5.2.1 对函数自适应采样的绘图函数
fplot函数的调用格式为:
1 | fplot(fname,lims,tol,选项) |
例8 用fplot函数绘制f(x)=cos(tan(πx))的曲线。
1 | fplot(@(x)cos(tan(pi*x)),[0,1]) |
5.2.2 其他坐标系下的二维曲线图
1.对数坐标图形
MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为:
1 | semilogx(x1,y1,选项1,x2,y2,选项2,…) |
例9 绘制的对数坐标图并与直角线性坐标图进行比较。
程序如下:
1 | x=0:0.1:10; |
2.极坐标图
polar函数用来绘制极坐标图,其调用格式为:
1 | polar(theta,rho,LineSpec) |
其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。
例5-10 绘制极坐标图。
1 | t=0:pi/50:20*pi; |
5.2.3 其他特殊二维图形
1.其他形式的线性直角坐标图
在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等
(1) 条形类图形
1 | bar(y) |
例11 条形图应用示例。
程序如下:
1 | x=-1:1; y=[1,2,3,4,5;1,2,1,2,1;5,4,3,2,1]; |
(2)直方图
在MATLAB中,绘制直方图的函数有两个:hist函数和rose函数,分别用于绘制直角坐标系下的直方图和极坐标系下的直方图,后者也称为玫瑰花图。
hist函数的应用更为广泛一些,其调用格式为:
1 | hist(y[,x]) |
例12 绘制服从高斯分布的直方图,再将这些数据分到指定范围的区间中,并绘制直方图中。
1 | y=randn(500,1); |
rose函数的调用格式与hist函数非常相似,调用方法如下:
1 | rose(theta[,x]) |
例13 绘制例5-12中高斯分布数据在极坐标下的直方图。
1 | y=randn(500,1); |
2.面积类图形
(1)扇形统计图
扇形统计图又称为饼图,反映一个数据系列中各个分量在总数量中所占的比重。MATLAB提供了pie函数来绘制扇形统计图,其调用格式为:
1 | pie(x,explode) |
例14 某次考试优秀、良好、中等、及格、不及格的人数分别为:7、17、23、19、5,试用扇形统计图作成绩统计分析。
程序如下:
1 | pie([7,17,23,19,5],[0,0,0,1,1]) %对应第5分量部分从饼图中心分离 |
注意:
1 | pie([7,17,23,19,5],[0,0,0,0,1]) %中1对应的是将5%突出、分开 |
1 | pie([7,17,23,19,5],[0,0,0,1,1]) %对应第5分量部分从饼图中心分离 |
(2)面积统计图
面积统计图反映数量变化的趋势,在实际中可以表现不同部分对整体的影响。在MATLAB中,绘制面积统计图的函数是area,其调用格式为:
1 | ① area(x)。 |
1 | x=1:2:9; |
(3)实心图
实心图是将数据的起点和终点连成多边形,并填充颜色。绘制实心图的函数是fill,其调用格式为:
1 | fill(x,y,颜色) |
例15 绘制一个红色的正八边形。
1 | t=0:2*pi/8:2*pi; %取正八边形坐标点 |
3.散点类图形
MATLAB提供了绘制散点类图形的函数scatter、stairs和stem,分别用于绘制散点图、阶梯图和杆图。3个函数的调用格式为:
1 | scatter(x,y[,'filled'][,颜色]) |
例16 分别以散点图、阶梯图和杆图形式绘制曲线
程序如下:
1 | >> x=0:0.35:7;y=2*exp(-0.5*x); |
例17
1 | t = 0:pi/50:2*pi; |
4.矢量类图形
(1)罗盘图
罗盘图表示起点为坐标原点的向量,同时还在坐标系中显示圆形的分隔线。
1 | ① compass(x,y) 。 |
(2)羽毛图
1 | ① feather(x,y) 。 |
(3)箭头图
1 | quiver([x,y,]u,v) |
例18 分别以罗盘图、羽毛图和箭头图形式绘制绘制正弦曲线。
1 | x=-pi:pi/8:pi; |
5.3 三维图形
5.3.1 绘制三维曲线的基本函数
plot3将二维绘图函数plot的有关功能扩展到三维空间。
1 | plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) |
例5-18 绘制空间曲线。
先求出曲线所对应的参数方程:
程序如下:
1 | t=0:pi/50:2*pi; |
5.3.2 三维曲面
1.平面网格坐标矩阵的生成
(1)利用矩阵运算生成。
1 | x=a:dx:b; y=(c:dy:d)'; |
(2)利用meshgrid函数生成。
1 | x=a:dx:b; y=c:dy:d; |
例19 已知6<x<30,15<y<36,求不定方程2x+5y=126的整数解。
程序如下:
1 | x=7:29; |
2.绘制三维曲面的函数
1 | mesh(x,y,z,c) |
例20 用三维曲面图z=sin(y)cos(x)。
1 | %程序1: |
例21 绘制两个直径相等的圆管的相交图形。
1 | m=30;z=1.2*(0:m)/m;r=ones(size(z));theta=(0:m)/m*2*pi; |
3.标准三维曲面
sphere函数的调用格式为:
1 | [x,y,z]=sphere(n) |
cylinder函数的调用格式为:
1 | [x,y,z]=sphere(R,n) |
MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。
5.2.3 其他三维图形
1.三维条形图
1 | bar3(y) |
2.三维饼图
1 | pie3(x,explode) |
3.三维实心图
1 | fill3(x,y,z,c) |
4.三维散点图
1 | scatter3(x,y,z,c) |
5.三维杆图
1 | stem3(z) |
6.三维箭头图
1 | quiver3(x,y,z,u,v,w) |
例22 绘制三维图形:
(1)绘制魔方阵的三维条形图。
(2)以三维杆图形式绘制曲线y=2sin(x)。
(3)已知x=[2347,1827,2043,3025],绘制三维饼图。
(4)用随机的顶点坐标值画出五个黄色三角形。
程序如下:
1 | subplot(2,2,1); |