您的位置:首页 > 编程语言 > MATLAB

在Matlab中绘制嵌套图形

2017-03-12 11:11 232 查看
很多时候我们需要在一副图形中显示多条曲线随参数的变化情况,但往往由于某些曲线太过贴近而无法观察它们之间的细微差异,或者由于某些曲线过于分离使得所绘制的图形显得并不紧凑,这两点原因是比较常见的,但不同的应用场景可能有不同的绘制嵌套图的原因,因此,根据具体的应用,我们常常需要在一个图形中再次嵌套另外一个图形,以便凸显不同曲线间的细微差异或者使得最终的图形显得紧凑而美观,或者是达到某一具体应用的目的。下面将通过一个示例来演示如何在Matlab中实现大图中嵌套小图,为表述形象起见,在这里我们暂且称大图为“母图”,而内嵌的小图为“子图”,同时,在下面的每一步中,我将先呈现效果图,再阐释如何绘制,带领大家一步步学习其中的原理。

     第1步:根据部分实验数据绘制“母图”(先上效果图,再阐释如何绘制)



 

      “母图””的绘制方法很简单,如果你已经有了相关的数据,那么直接调用下面的语句即可:

% 绘制“母图”
plot(x,y,'ro-','Linewidth',2,'MarkerSize',8);
hold on;
plot(x,y,'bo-','Linewidth',2,'MarkerSize',8);
hold on;


      上述代码省略了很多细节,如坐标轴的文本以及图形标注的设置代码,但这不是要讲解的重点,若对绘制图形的一些细节不清楚,可以查阅Matlab绘图相关指导手册,在这里我们仅关注如何在“母图”内绘制“子图”。

      第2步:在“母图”的基础上绘制“子图”(先上效果图,再阐释如何绘制)

      


      

      在这一步中,我们已经将“子图”(橙色箭头指向处)绘制在了“母图”之内,下面是具体的绘制代码,其中关键代码我将用红色格外标注并给予说明。

% 在“母图”内绘制“子图” 
axes('position',[0.25,0.65,0.4,0.2]);
set(gca,'XTick',x);
xlabel('Loop number','fontsize',10,'fontname','Times New Roman');
ylabel('Size of Universe','fontsize',10,'fontname','Times New Roman');
hold on;
plot(x,mr3,'r*-',x,mr4,'b*-','MarkerSize',6,'Linewidth',2);
      

     上述代码段,关键之处在于红色标注代码行,它是在“母图”中绘制“子图”关键而且是唯一不同于第1步中“母图”绘制的一行代码。核心是axes函数,axes('position',[left, bottom, width, height])意思是在当前绘图窗口(“母图”所在窗口)的左下角位置建立一个坐标,其中,Left表示坐标距离当前绘图窗口(“母图”所在窗口)左端的距离,bottom表示坐标距离当前绘图窗口(“母图”所在窗口)下边界的距离,width和height分别指定了坐标相对于当前绘图窗口(“母图”所在窗口)左下角位置的宽度和高度,四个参数的取值均位于[0
,1]之间。代码其它部分与母图的绘制相似,在此不再赘述。

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  图形 matlab 应用