[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导出eps或jpg图片的四种方法

 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB和Mathematica、Maple并称为...
  • rookiew
  • rookiew
  • 2016年05月15日 20:07
  • 8761

【Matlab】关于axes和figure对象的关系

axes和figure都属于graphics object,用于绘图与图像显示,既然是两种东西,当然两者之间并不是等同的关系,下面将就几个问题进行解释,让大家正确区分这两个概念。     第一:什...
  • u012277311
  • u012277311
  • 2016年01月05日 14:59
  • 639

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

MATLAB交互界面axes的使用
  • mingtian715
  • mingtian715
  • 2017年06月09日 15:02
  • 6163

Matlab中axes函数解析

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

关于Matlab坐标轴的Position

想画一个坐标轴箭头,需要知道axis的坐标: x1=linspace(0,1,100); y1=x1.^2; figure1 = figure('PaperPosition',[0.6345...
  • lsxpu
  • lsxpu
  • 2013年05月13日 17:03
  • 1160

【Matlab画图】如何去除Matlab图形中的边界

有时候需要将Matlab画的图插到wenzha
  • fallian
  • fallian
  • 2014年08月23日 19:46
  • 3594

Matlab学习笔记 figure函数

matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象。每一个这样的窗口都有一些属性,例如窗口的尺寸、位置,等等。下面一一介绍它们。 一、概述   总的来说,fi...
  • u010555688
  • u010555688
  • 2014年04月17日 21:38
  • 4269

figure,大小设置

http://blog.csdn.net/benjmzhu/article/details/7246870 绘图窗口菜单File | Export Setup里很方便的改变这些属性 特别是...
  • lin00jian
  • lin00jian
  • 2016年05月25日 11:11
  • 1599

matlab 保存figure中的图像

转载:http://www.ilovematlab.cn/thread-296430-1-1.html 最近看了一些用matlab对图形图片进行保存的帖子和资源,关于图像保存的方法给...
  • zhaoluruoyan89
  • zhaoluruoyan89
  • 2017年11月09日 16:25
  • 318

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

最近用 matlab画图,需要导出图片,但是发现经过拉伸或者改变了标注的位置以避免挡住图形之后,无法确保导出的每一张图片具有相同的大小。就算可以手动调整图片大小,由于白色背景,也无法确保图片并列起来之...
  • Ying_Xu
  • Ying_Xu
  • 2016年09月20日 16:18
  • 11137
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Matlab] 如何将axes填充整个Figure
举报原因:
原因补充:

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