5.1.2 MATLAB学习笔记之绘图-绘制图形的辅助操作

绘制图形的辅助操作

绘制完图形后,可能还需要对图形进行一些辅助操作,以使图形意义更加明确,可读性更强。

一、图形标注

在绘制图形的同时,可以对图形加上一些说明,如图形名称、坐标轴说明以及图形某一部分的含义等,这些操作称为添加图形标注。有关图形标注函数的调用格式如下:

title (图形名称)

xlabel(x轴说明)

ylabel(y 轴说明)

text(x,y, 图形说明)

legend(图例1,图例2,…)

  • title 和 xlabel 、ylabel函数分别用于说明图形和坐标轴的名称。
  • text 函数是在(x,y) 坐标处添加图形说明。
  • 添加文本说明也可用gtext 命令,执行该命令时,十字坐标光标自动跟随鼠标移动, 单击鼠标即可将文本放置在十字光标处。
  • legend 函数用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在图形空白处,用户还可以通 过鼠标移动图例,将其放到所希望的位置。除legend 函数外,其他函数同样适用于三维图形, z坐标轴说明用zlabel 函数。

上述函数中的说明文字,除使用标准的ASCII 字符外,还可以使用LaTeX(LaTeX 是一种十分流行的数学排版软件)格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。

在MATLAB支持的LaTeX 字符中,用\bf、\it 、\rm控制字符分别定义黑体、斜体和正体字符,受LaTeX 字符控制部分要加大括号{}括起来

各个字符既可以单独使用,又可以和其他字符及命令联合使用。

MATLAB 可用的LaTeX字符集

img

Matlab的骚操作——中文和LaTeX标记的图4

可以通过标准的 LaTeX命令来定义上标和下标,这 样可以使得图形标注更加丰富多彩。如果想在某个字符后面添加上标,则可以在该字符后面跟 一个由“^”字符引导的字符串。若想把多个字符作为指数,则应该使用大括号。

类似地可以定义下标,下标是由下画线(_)引导的。

二、坐标控制

在绘制图形时,MATLAB可以自动根据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清晰地显示出来。

所以,在一般情况下用户不必选择坐标轴的刻度范围。但是, 如果用户对坐标系不满意,可利用axis 函数对其重新设定。该函数的调用格式如下:

axis([xmin,xmax,ymin,ymax,zmin,zmax])

如果只给出前4个参数,则MATLAB按照给出的x 、y轴的最小值和最大值选择坐标系范围,以便绘制出合适的二维曲线。如果给出了全部参数,则系统按照给出的3个坐标轴的最小 值和最大值选择坐标系范围,以便绘制出合适的三维图形。

axis函数功能丰富,常用的用法还有以下几种。

(1)axis equal: 纵、横坐标轴采用等长刻度。

(2)axis square:产生正方形坐标系(默认为矩形)。

(3)axis auto:使用默认设置。

(4)axis off:取消坐标轴。

(5)axis on: 显示坐标轴。

给坐标加网格线用**grid**命令来控制。grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。

给坐标加边框用**box** 命令来控制。 box on/off命令控制是加还是不加边框线,不带参数的box 命令在两种状态之间进行切换。

例1 绘制分段函数曲线并添加图形标注。

img

程序如下:

x=linspace(0,10,100);    %产生自变量向量x
y=[];                       %y的初始值为空
for x0=x
    if x0>=8
        y=[y,1];               %将函数值追加到向量y
    elseif x0>=6
        y=[y,5-x0/2];
    elseif x0>=4
        y=[y,2];
    elseif x0>=0
        y=[y,sqrt(x0)];
    end
end
plot(x,y)
axis([0,10,0,2.5])           %设置坐标轴
title('分段函数曲线')          %加图形标题
xlabel('Variable X')         %加X轴说明
ylabel('Variable Y')         %加Y轴说明
text(2,1.3,'y=x^{1/2}')      %在指定位置添加图形说明
text(4.5,1.9,'y=2')
text(7.3,1.5,'y=5-x/2')
text(8.5,0.9,'y=1')

untitled

三、图形保持

一般情况下,每执行一次绘图命令就刷新一次当前图形窗口,图形窗口原有图形将不复存在。

若希望在已存在的图形上再继续添加新的图形,可使用图形保持命令holdhold on/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。

例2 用图形保持功能在同一坐标内绘制曲线
y = 2 e − 0.5 x s i n ( 2 π x ) y=2e^{-0.5x}sin(2πx) y=2e0.5xsin(2πx)
及其包络线。

程序如下:

x=(0:pi/100:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];
y2=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y1,'b:')             %绘制两根包络线
axis([0,2*pi,-2,2])        %设置坐标
hold on        %设置图形保持状态
plot(x,y2,'k')                       %绘制曲线
legend('包络线','包络线','曲线y')       %加图例
hold off        %关闭图形保持
grid              %网格线控制

untitled

四、图形窗口的分割

在实际应用中,经常需要在一个图形窗口内绘制若干个独立的图形,这就需要对图形窗口进行分割。

分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一 图形窗口中的不同图形称为子图。

MATLAB 系统提供了 subplot 函数,用来将当前图形窗口分割成若干个绘图区。每个区域代表一个独立的子图,也是一个独立的坐标系,可以通过subplot 函数激活某一区,该区为活动区,所发出的绘图命令都是作用于活动区域。subplot函数的调用格式如下:

subplot(m,n,p)

该函数将当前图形窗口分成m×n 个绘图区,即m 行,每行 n 个绘图区,区号按行优先编号,且选定第p 个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。

例3 在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。

程序如下:

x=linspace(0,2*pi,60);
y=sin(x);
z=cos(x);
t=sin(x)./(cos(x)+eps);
ct=cos(x)./(sin(x)+eps);
subplot(2,2,1)       %选择2×2个区中的1号区
plot(x,y)
title('sin(x)');
axis([0,2*pi,-1,1])
subplot(2,2,2)      %选择2×2个区中的2号区
plot(x,z)
title('cos(x)');
axis([0,2*pi,-1,1])
subplot(2,2,3)      %选择2×2个区中的3号区
plot(x,t)
title('tangent(x)');
axis([0,2*pi,-40,40])
subplot(2,2,4)      %选择2×2个区中的4号区
plot(x,ct)
title('cotangent(x)');
axis([0,2*pi,-40,40])

程序运行结果如图所示。

untitled

可以进行更灵活的分割。请看下面的程序。

x=linspace(0,2*pi,60);
y=sin(x);
z=cos(x);
t=sin(x)./(cos(x)+eps);
ct=cos(x)./(sin(x)+eps);
subplot(2,2,1)     %选择2×2个区中的1号区
plot(x,y-1)
title('sin(x)-1');axis ([0,2*pi,-2,0])
subplot(2,1,2)     %选择2×1个区中的2号区
plot(x,z-1)
title('cos(x)-1');axis ([0,2*pi,-2,0])
subplot(4,4,3)      %选择4×4个区中的3号区
plot(x,y)
title('sin(x)');axis ([0,2*pi,-1,1])
subplot(4,4,4)      %选择4×4个区中的4号区
plot(x,z)
title('cos(x)');axis ([0,2*pi,-1,1])
subplot(4,4,7)       %选择4×4个区中的7号区
plot(x,t)
title('tangent(x)');axis ([0,2*pi,-40,40])
subplot(4,4,8)        %选择4×4个区中的8号区
plot(x,ct)
title('cotangent(x)');axis ([0,2*pi,-40,40])

untitled

Matlab学习笔记内容来源于《MATLAB程序设计与应用 第三版》刘卫国主编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值