10.7.2
任意布置子图和轴外注释
【 * 例 10.7.2 -1 】本例演示: axes 轴位框设计、 rectangle
的运用、及轴外注释。所谓轴外注释,实际上是使用了两个轴位框。一个轴位框充满全部图形窗,其坐标框被隐去,而只写注释文字。而另一个比较小的轴位框用于绘图。这样从外表看去,注释就处于那小轴位框的外部。
% 图形数据的产生
zeta2=[0.2 0.4 0.6 0.8
1.0];n=length(zeta2);
for k=1:n;Num{k,1}=1;Den{k,1}=[1 2*zeta2(k)
1];end
S=tf(Num,Den); % 产生单输入多输出系统
t=(0:0.4:20)'; % 时间采样点
[Y,x]=step(S,t); % 单输入多输出系统的响应
tt=t*ones(size(zeta2)); % 为画彩带图,生成与函数值 Y
维数相同的时间矩阵。
% 产生全窗轴位框,并隐去坐标轴
clf reset,H=axes('Position', [0, 0, 1, 1],
'Visible', 'off');
% 产生包含多行字符串的元胞数组
str{1}='\fontname{ 隶书 } 二阶系统阶跃响应 ';
%<11>
str{2}='y(t) = 1 -
\beta^{-1}e^{-\zetat}sin(\betat + \theta)';
str{3}=' ';str{4}='\fontname{ 隶书 } 其中:
';
str{5}='\beta = (1 -
\zeta^{2})^{0.5}';
str{6}='\theta = arctg(\beta/\zeta)';
str{7}='\zeta = .2, .4, .6, .8, 1';
%<15>
% 使 H 句柄轴对象成为当前轴,然后注释多行文字。
set(gcf, 'CurrentAxes',H)
%<18>
text(0.01, 0.73, str, 'FontSize', 12)
%<19>
h1=axes('Position', [0.45, 0.45, 0.5, 0.5]); %
产生右半窗的轴位框
ribbon(tt,Y,0.4) % 在 h1 轴位框中画彩带图
% 对 X 轴、 Z 轴重标刻度值
set(h1,'XTickLabelMode','manual','XTickLabel','0|0.4|0.8|1.2');%<23>
set(h1,'ZTickLabel','0|1.0|2.0');
%<24>
% 低层指令标识轴名
set(get(h1,'XLabel'),'String','\zeta
\rightarrow','Rotation',17.5)
set(get(h1,'YLabel'),'String','\leftarrow
t','Rotation',-25) %<27>
set(get(h1,'Zlabel'),'String','y
\rightarrow')
h2=axes('Position',[0.03, 0.08, 0.27, 0.27]);%
在左下角,产生小的轴位框。
plot(tt,Y) % 在 h2 轴对象上画二维图
% 在右下方画系统方块框图
h3=axes('Position',[0.37,0.04,0.63,0.32]); %
设置画框图的轴位框
set(h3,'Xlim',[0,1.2],'Ylim',[0,0.5]) %
设置轴的刻度范围
set(h3,'DataAspectRatio',[1 1 1]) %
设置刻度比例
set(h3,'ColorOrder',[0,0,0]) %
设置绘线的首选用色
set(h3,'Visible','off') % 隐去坐标轴
hh1=rectangle('Position',[0.5,0.2,0.4,0.2],'Curvature',[0,0]);
% 画方框
<37>
hh2=rectangle('Position',[0.2,0.26,0.08,0.08],'Curvature',[1,1]);
% 画圆框
<38>
xx1=0.05:0.01:0.2;xx2=0.28:0.02:0.5;
xx3=0.9:0.02:1.1;xx4=0.24:0.02:1;
yy5=0.1:0.02:0.26;yy6=0.1:0.02:0.3;
yy1=0.3*ones(size(xx1));yy2=0.3*ones(size(xx2));
yy3=0.3*ones(size(xx3));yy4=0.1*ones(size(xx4));
xx5=0.24*ones(size(yy5));xx6=ones(size(yy6));
line(xx1,yy1);line(xx2,yy2);line(xx3,yy3);line(xx4,yy4);
line(xx5,yy5);line(xx6,yy6)
line(0.17,0.3,'Marker','>','MarkerFaceColor','k')
line(0.47,0.3,'Marker','>','MarkerFaceColor','k')
line(1.1,0.3,'Marker','>','MarkerFaceColor','k')
line(0.24,0.23,'Marker','^','MarkerFaceColor','k')
line(0.17,0.35,'Marker','+')
text(0.27,0.23,'-')
text(0.05,0.35,'u(t)')
text(1,0.35,'y(t)')
text(0.6,0.26,'s{^2} + 2{\zeta}s');
xx7=0.56:0.02:0.84;yy7=0.3*ones(size(xx7));line(xx7,yy7)
text(0.68,0.35,'1')