[Matlab] 如何将axes填充整个Figure

原创 2016年06月01日 10:48:08

简介

在写文章的时候,时常用到Matlab来绘制图形,以更好的说明自己的想法。一般的方法是将Matlab绘制的figure另存为png或者jpeg格式的图像然后将这些图像放到自己的文档中。不管是放到word里还是用过Latex来排版,都面临一个问题:Matlab绘制的区域在整个图像的中间区域且与边缘相差一些像素。我们可以手动剪切这些多余的边缘,但是,如果图像变多了,或者需要重新绘制图形了,每次都手动操作确实让人反感。这里我们用在绘制的时候加一段程序来将我们需要的图形区域填充整个图像,并用程序自动保存图像。

程序演示

写一段程序来演示一下这个功能。

for i = 1:4
  % plot a figure
  figure;
  x = normrnd(0, 3, [100, 3]);
  hist(x);  
  legend({'$C_1$', '$C_2$', '$C_3$'}, 'Interpreter', 'latex', 'Location', 'NorthEast');
  xlabel('\textbf{Variabel} $x$', 'Interpreter', 'latex');
  ylabel('\textbf{Count}', 'Interpreter', 'latex');
  title(['Figure ', num2str(i)]);

  % specify figure size
  af = gcf;
  af.Position(3) = af.Position(3)*0.7;
  af.Position(4) = af.Position(4)*0.5;

  % expand axes to fill figure
  ax = gca;
  outerpos = ax.OuterPosition;
  ti = ax.TightInset; 
  left = outerpos(1) + ti(1);
  bottom = outerpos(2) + ti(2);
  ax_width = outerpos(3) - ti(1) - ti(3);
  ax_height = outerpos(4) - ti(2) - ti(4);
  ax.Position = [left bottom ax_width ax_height];  

  % Specify Page Size
  af.PaperPositionMode = 'auto';
  fig_pos = af.PaperPosition;
  af.PaperSize = [fig_pos(3) fig_pos(4)];  

  % save the figure 
  print(af, ['Figure_', num2str(i), '.png'], '-dpng');
end

结果如下图所示:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

上面的图像是直接将保存后的图像上传的,四个图像的尺寸完全相同。并且没有多余的空白边缘,无需进一步剪切图像。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Matlab中绘制带箭头的坐标轴

转载自:http://blog.sina.com.cn/s/blog_6427cceb0100xnj9.html 方法一: ======================================...
  • lqhbupt
  • lqhbupt
  • 2014年01月08日 21:09
  • 5300

史上最经典的Linux内核学习方法论

http://blog.chinaunix.net/uid-20586655-id-1752570.html   从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时...

MIMIC数据库中数据的下载以及MATLAB读取

一、MIMIC数据库介绍 MIMIC数据库是美国麻省理工提供的一个对公众开放的多参数重症监护数据库,里面提供了诸如心电信号(ECG)、光电容积脉搏波信号(Pleth)、动脉血压信号(ABP)和呼吸信号...

currentpoint in axes and figure matlab

Axes CurrentPoint 2-by-3 matrix Location of last button click, in axes data units.Contains the coo...
  • colddie
  • colddie
  • 2012年03月16日 17:24
  • 807

MATLAB GUI axes的ButtondownFCN无效的问题

这两天写了一个matlab gui程序,具体功能是在

Matlab GUI 中多Axes下的鼠标动态跟踪

Matlab GUI 中多Axes下的鼠标动态跟踪 windowbuttonmotionfcn 函数 文章来源:不详 作者:佚名  -------------------------------...
  • alaclp
  • alaclp
  • 2012年04月21日 10:17
  • 1506

MATLAB中GUI的使用技巧(1)之axes

MATLAB交互界面axes的使用

Matlab中axes函数解析

axes函数,在Matlab的帮助文档中的说明: “Create axes graphics object” ----创建坐标系图形对象 语法: [plain] vi...
  • ljh0302
  • ljh0302
  • 2016年03月09日 19:09
  • 3402

设置matlab画出的figure图像导出图片的大小

最近用 matlab画图,需要导出图片,但是发现经过拉伸或者改变了标注的位置以避免挡住图形之后,无法确保导出的每一张图片具有相同的大小。就算可以手动调整图片大小,由于白色背景,也无法确保图片并列起来之...
  • Ying_Xu
  • Ying_Xu
  • 2016年09月20日 16:18
  • 8950

matlab figure的用法

Matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象。每一个这样的窗口都有一些属性,例如窗口的尺寸、位置,等等。下面一一介绍它们。   一、概述   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Matlab] 如何将axes填充整个Figure
举报原因:
原因补充:

(最多只允许输入30个字)