1.2 Figure图形属性设置
Figure图形属性设置主要针对figure图形进行图形线条、颜色、显示样式等的设置,本节主要讲述基本Figure图形plot函数应用绘图、线型和颜色设置、网格化、曲面图绘制以及特殊字符标记等。
1.2.1 plot绘图
绘制一个洛伦兹曲线,程序如下:
function ysw1_6 % Designed by Yu Shengwei From SWJTU University % 2014年12月29日 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 t_final=100; % 终止时间 x0=[0;0;1e-10]; % 初值 [t,x]=ode45(@lorenzeq,[0,t_final],x0); % 龙格库塔法 figure('color',[1,1,1]); % 先建图形窗口 subplot(211),plot(t,x); % 根轨迹图 subplot(212),plot3(x(:,1),x(:,2),x(:,3)); % 3D曲线图 axis([10,42,-20,20,-20,25]); % 坐标轴显示范围设置 colormap(jet) % 颜色 shading interp % 消隐 end function xdot=lorenzeq(t,x) xdot=[-8/3*x(1)+x(2)*x(3); -10*x(2)+10*x(3);-x(1)*x(2)+28*x(2)-x(3)]; end
运行程序输出结果如图1-9所示。
图1-9 洛伦兹曲线
如图1-9所示,MATLAB提供了丰富的可视化图形显示界面,用户可以很清楚地知道曲线的走势,MATLAB也因其友好的人机交互模式受到越来越多的人的喜好。
最简单的正切函数画图,代码如下:
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 x = 0:0.05:10; % 0.05,0.1,0.15,0.2,……,10 y = tan(x); % 曲线方程 plot(x,y,'r.-') % 画图 grid on; xlabel('x'); ylabel('y')
运行程序输出结果如图1-10所示。
图1-10 正切函数图形
如图1-10所示,用户只需输入x和y,就可以画出图形,且图形就像一个描点图纸,每一个点连接即成一条曲线。其实单纯的plot画图是很简单的,如何得到x和y,才是工程上应该考虑的问题。
1.2.2 线型和颜色设置
1.线型
不同的曲线,我们希望显示不同的线型,以方便用户区分不同的工况,MATLAB图形工具箱为此提供了很丰富的线型设置,以下将主要列举作者使用过的线型——常用线型。
具体的MATLAB程序如下:
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 x = 1:5:100; % 1,6,11,16,……,96 % 直线方程 y1 = 1*x; y2 = 2*x; % 直线方程 y3 = 3*x; y4 = 4*x; % 直线方程 y5 = 5*x; y6 = 6*x; % 直线方程 y7 = 7*x; y8 = 8*x; % 直线方程 y9 = 9*x; y10 = 10*x; % 直线方程 figure('color',[1,1,1]); % 先建图形窗口 hold on plot(x,y1,'-') plot(x,y2,'--') % 画图 plot(x,y3,'.-') plot(x,y4,'*-') % 画图 plot(x,y5,'s-') plot(x,y6,'p-') % 画图 plot(x,y7,'>-') plot(x,y8,'<-') % 画图 plot(x,y9,'h-') plot(x,y10,'o-') % 画图 grid on; xlabel('x'); ylabel('y')
运行程序输出结果如图1-11所示。
图1-11 线型设置
2.颜色
颜色设置直接在线型设置前面添加颜色英文首字母即可,具体的MATLAB程序如下:
figure('color',[1,1,1]); % 先建图形窗口 hold on plot(x,y1,'r-') plot(x,y2,'g--') % 画图 plot(x,y3,'b.-') plot(x,y4,'k*-') % 画图 plot(x,y5,'cs-') plot(x,y6,'mp-') % 画图 plot(x,y7,'w>-') plot(x,y8,'y<-') % 画图 grid on; xlabel('x'); ylabel('y')
运行程序输出结果如图1-12所示。
图1-12 线型颜色设置
如图1-11和图1-12所示,总结MATLAB线型和颜色如表1-2所示。
表1-2 点样式及线颜色
1.2.3 图像网格化grid
1.无网格
MATLAB画图,默认是无网格的,具体程序如下:
% 2014年12月29日 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 x = 1:0.1:10; y = x.^2 + max(x)*sin(x); plot(x,y) % 画图
运行程序输出图形如图1-13所示。
图1-13 无网格
2.有网格
如图1-13所示为无网格图形,MATLAB中,采用grid函数即可实现图形的网格化,具体如下:
grid on % 有网格
运行程序输出图形如图1-14所示。
图1-14 网格化
如图1-14所示的图形为已经网格化的图形,如何将图1-14中的网格化去掉呢?MATLAB也提供了较简易的操作函数,具体如下:
x = 1:0.1:10; y = x.^2 + max(x)*sin(x); plot(x,y) grid on % 网格化 grid off % 去网格化
运行程序输出图形如图1-15所示。
图1-15 去网格化
1.2.4 曲面图绘制
三维曲面绘制,由x、y、z构成,输入相应的x、y、z,采用MATLAB三维曲面显示函数即可显示,程序如下。
1.surf
具体MATLAB程序如下:
%% 曲面surf % Designed by Yu Shengwei From SWJTU University % 2014年12月29日 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 [x,y] = meshgrid([1:0.1:10],[1:0.1:10]); z = x.^2+y.^3.*sin(x); % Z figure('color',[1,1,1]) % 先建一个背景为白色的图形窗口 surf(x,y,z) % 曲面 xlabel('x');ylabel('y');zlabel('z'); % xyz轴标记
运行程序输出图形如图1-16所示。
图1-16 surf三维曲面
2.mesh
采用如图1-16所示的三维曲面进行mesh操作,具体如下:
figure('color',[1,1,1]) % 先建一个背景为白色的图形窗口 mesh(x,y,z) % 曲面 xlabel('x');ylabel('y');zlabel('z'); % xyz轴标记
运行程序输出图形如图1-17所示。
图1-17 mesh三维曲面
1.2.5 特殊字符标记
MATLAB提供了对图形上特殊字符进行标记的功能,对于上下标的标定,工程上应用较广泛,例如等的标记,MATLAB提供了上下控制指令,具体如表1-3所示。
表1-3 上下控制指令
对于常见的阿拉伯字母,如等注释符号,MATLAB也提供了特殊的字符命令,具体如表1-4所示。
表1-4 希腊字母
还有其他的一些数学字符命令,即数学公式编辑器中出现的字符,MATLAB提供了相应的字符指令,具体如表1-5所示。
表1-5 其他字符
针对这些特殊字符的标记,用户可以将要使用的特殊字符变量显示在图形中,达到一一对应的关系,因此在实际应用中广泛使用。
如对标记,具体的MATLAB程序如下:
% Designed by Yu Shengwei From SWJTU University % 2014年12月29日 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 x = 0:0.05:10; % 0.05,0.1,0.15,0.2,……,10 y = exp(-x).*sin(x); % 曲线方程 plot(x,y,'r.-') % 画图 grid off; xlabel('x'); ylabel('y') text(3,0.1,'e^{-t}sint'); text(5,0.1,'x~{\chi}_{\alpha}^{2}(2)');
运行程序得到如图1-18所示结果。
图1-18 特殊字符标记(1)
针对表1-4所示的特殊字符,进行图形标记,具体的MATLAB程序如下:
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 x = 0:0.05:10; % 0.05,0.1,0.15,0.2,……,10 y = exp(-0.5*x).*sin(10*x); % 曲线方程 plot(x,y,'r.-') % 画图 grid off; xlabel('x'); ylabel('y') % 去网格,xy轴标记 text(4,0.6,'\int \geq \otimes '); % 标记文字 text(5,0.5,'\neq \perp \Re'); % 标记文字 text(6,0.4,'\downarrow \subset \copyright'); % 标记文字
运行程序得到如图1-19所示结果。
图1-19 特殊字符标记(2)