Matlab在数据可视化方面提供了强大的功能,可以把数据用二维、三维或思维图形表达出来。
二维平面图形
1.plot函数
plot(Y) 用以绘所对应的行向量Y,若Y为复数,则plot(Y)等于plot(real(Y),image(Y))。
plot(x1,y1,...,xn,yn) 绘制多个X、Y 对组的图,所有线条都使用相同的坐标区当x1,y1等均为实数向量,且为同维向量时,plot先描出点,然后用直线依次连接,命令将对每一对x,y绘制曲线。
plot(x1,y1,LineSpec1,...,xn,yn,LineSpecn) LineSpec为选项开关字符串
选项 | 含义 | 选项 | 含义 |
- | 实线 | . | 用点号标出数据点 |
-- | 虚线 | o | 用圆圈标出数据点 |
: | 点线 | x | 用叉号标出数据点 |
-. | 点画线 | + | 用加号标出数据点 |
r | 红色 | s | 用小正方形标出数据点 |
g | 绿色 | D | 用菱形标出数据点 |
b | 蓝色 | V | 用下三角标出数据点 |
y | 黄色 | ^ | 用上三角标出数据点 |
m | 洋红 | < | 用左三角标出数据点 |
c | 青色 | > | 用右三角标出数据点 |
w | 白色 | H | 用六角形标出数据点 |
k | 黑色 | P | 用五角形标出数据点 |
* | 用星号标出数据点 |
h=plot(x1,y1,LineSpec,'PropertyName','PropertyValue') 设置plot函数常用属性,返回绘制函数的句柄。
属性名称 | 含义 | 属性名称 | 含义 |
LineWidth | 设置线的宽度 | MarkerEdgeColot | 设置标记点的边缘颜色 |
MarkerSize | 设置标记点的大小 | MarkerFaceColor | 设置标记点的填充颜色 |
例子:
x=0:pi/10:2*pi;
y1=sin(x);
y2=sin(x-0.25);
y3=sin(x-0.5);
figure;
plot(x,y1,'g',x,y2,'b--o',x,y3,'c*');
2.对数坐标曲线命令
函数semilogx、semilogy和loglog用来绘制二维对数坐标曲线,用法与plot相同
例子:
x1=logspace(-1,2);
subplot(131);
loglog(x1,exp(x1),'-s');
title('loglog函数绘图');
grid on;
x2=0:0.1:10;
subplot(132);
semilogx(10.^x2,x2,'r-.o');
title('semilogx函数绘图');
subplot(133);
semilogx(10.^x2,x2,'r+');
title('semilogy函数绘图');
3.双y轴图形
如果两组数据范围相差较大,而又希望放在同一图形中比较分析,可以绘制双y轴图形。
plotyy(x1,y1x2,y2,fun1,fun2) “fun1”是字符串格式,用来指定绘图函数的函数名,如plot、semilogx等。“fun1”和"fun2"可以指定不同的绘图函数并分别绘制这两种曲线。
例如
x=0:0.1:10;
y1=200*exp(-0.05*x).*sin(x);
y2=0.8*exp(-0.5*x).*sin(10*x);
figure;
plotyy(x,y1,x,y2,'plot','stem');
4.图形窗口的分割
subplot(m,n,p) 分割图形显示窗口,m表示上下分割数,n表示左右分割数,p表示子图编号。例如subplot(3,2,3)意为把图形分割为3行2列共6个子窗口,并选择第3行第2列(排序为3)的子窗口作为当前窗口进行操作。
例子
x=linspace(-3.8,3.8);
y_cos=cos(x);
y_poly=1-x.^2./2+x.^4./24;
subplot(2,2,1);
plot(x,y_cos);
title('subplot 1: Cosine');
subplot(2,2,2);
plot(x,y_poly,'g');
title('subplot 2:Polynomial');
subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('subplot 3 and 4:Both');
5.坐标系的调整
axis([xmin xmax ymin ymax]) [xmin xmax ymin ymax]中分别给出x轴和y轴的最大值、最小值。
axis equal x轴和y轴的单位长度相同
axis square 图框呈方形
x1=linspace(0,10,100);
y1=sin(x1);
ax1=subplot(2,1,1);
plot(ax1,x1,y1);
x2=linspace(0,5,100);
y2=sin(x2);
ax2=subplot(2,1,2);
plot(ax2,x2,y2);
axis([ax1 ax2],[0 10 -1 1]);
三维待续...