很是讨厌MATLAB输出图像时自带的白边,尤其是当导出.eps格式时,很难通过编辑图片来去掉白边。网上有很多代码但是没有注释,有很多坑要填。这里提供一个去除白边的代码,自己在别人的基础上修改了而且加了注释。

MATLAB 坐标图

XLabel -- 标签

Title -- 标题

XTick -- 刻度线

XTickLable -- 刻度标签

下图显示了一个二维视图,其中 OuterPosition 值定义红色区域、Position 值定义蓝色区域,TightInset 值定义的品红色区域到蓝色之间的阴影区域

OuterPosition和Position是一个四元素的向量:[left bottom width height],均为0-1的小数,且均相对于整个绘图区域来说的,即figure的大小。

这四个值的作用:left和bottom确定左下角的坐标,即[0.25 0.25]表示左下角在1/4处,width和height确定区域所占的高度和宽度,[0.5 0.5]表示区域的高度和宽度为整个绘图区域的一半。[0.25 0.25 0.5 0.5]表示将区域的长和宽设为整个绘图区域的一半并放在正中间(自己计算一下位置就知道)。

TightInset是也是一个四元素的向量,但是有些区别:[left bottom right top],其代表的是左下右上四个方向上的Position的margin,也就是Lable和Title所在区域(即阴影区域),其值也是0-1的小数,且均相对于整个绘图区域来说的。TightInest是只读属性,故只能通过设置Position来改变图像区域大小。

去白边代码

%%%%%%%%%%%%%%%%%%%%%%
% fn -- 图像,可通过“f=figure;”获得
% fan -- 图像坐标,可通过“fa=gca”获得
%%%%%%%%%%%%%%%%%%%%%% f=[f1 f2 f3 f4]; % 四个不同图像
axs = [fa1,fa2,fa3,fa4]; % 四个不同图像的坐标对象 for i=1:4
% 图像保存去掉白边代码
ax = axs(i); % 获取一个坐标对象
set(ax,'LineWidth',1.5); % 设置坐标线宽
% set(ax, 'FontWeight','bold'); figure_FontSize=12; % 设置一个字号变量,方便统一更改
set(get(ax,'XLabel'),'FontSize',figure_FontSize); % 设置标签字号
set(get(ax,'YLabel'),'FontSize',figure_FontSize); % 通过findobj更改对象的属性
set(findobj(get(ax,'Children'),'LineWidth',0.5),'LineWidth',1.5);
set(findobj('FontSize',10),'FontSize',figure_FontSize); grid(ax,'on'); % 网格开
set(ax,'GridLineStyle',':','GridColor','k','GridAlpha',0.3); % 网格样式 % 删除白边的主体代码
% 注意在删除白边之后不可以再调整字号等属性,否则会将图像上的边缘上的内容剪裁掉
outerpos = ax.OuterPosition; % 获取外部框位置
ti = ax.TightInset; % 获取内容框位置
left = outerpos(1) + ti(1); % 把Position的left值设为左边margin的值
bottom = outerpos(2) + ti(2); % 把Position的bottom值设为右边margin的值
ax_width = outerpos(3) - ti(1) - ti(3); % 设置对应的宽度
ax_height = outerpos(4) - ti(2) - ti(4); % 设置对应的高度
ax.Position = [left bottom ax_width-0.01 ax_height-0.01]; % 可以微调一下,以保证边缘没有被剪裁掉。 fig = f(i);
fig.PaperPositionMode = 'auto';
fig_pos = fig.PaperPosition;
fig.PaperSize = [fig_pos(3)+1 fig_pos(4)+1];
end % 保存图像为eps格式,psc2表示支持彩色
saveas(f1,'plot_img/example1.eps','psc2');
saveas(f2,'plot_img/example2.eps','psc2');
saveas(f3,'plot_img/example3.eps','psc2');
saveas(f4,'plot_img/example4.eps','psc2');

另外,如果保存的eps文件出现放大后模糊的问题,原因可能有两个:

  • 图像中存在透明性质的点:取消透明即可
  • 渲染方式为opengl:set(gcf, 'Renderer', 'Painters');更改渲染方式。

matlab 图像保存时去除白边的更多相关文章

  1. matlab 和 origin作图去除白边,字体调节

    一 matlab作图 (1)在图形文件figure的菜单上点击file->export setup, 在size选项中,对"expand axes to fill figure&quo ...

  2. matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明

    转自:http://blog.csdn.net/fx677588/article/details/53301740 1. matlab图像保存说明 matlab中读取图片后保存的数据是uint8类型( ...

  3. matlab 图像的保存

    gcf:获取当前显示图像的句柄: 默认 plot 的 position 是 [232 246 560 420] 0. save >> A = randn(3, 4); >> B ...

  4. source insight 保存时删除多余空格,去除多余空格 space tab键

    source insight 保存时删除多余空格,去除多余空格 space tab键 摘自:https://blog.csdn.net/lanmanck/article/details/8638391 ...

  5. source insight 保存时删除多余空格,去除多余空格 space tab键【转】

    转自:http://blog.csdn.net/lanmanck/article/details/8638391 上传源码时最好把空格行去掉,以前介绍了使用notepad++,现在发现,习惯用sour ...

  6. PHP《将画布(canvas)图像保存成本地图片的方法》

    用PHP将网页上的Canvas图像保存到服务器上的方法 2014年6月27日 歪脖骇客 发表回复 8 在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审 ...

  7. VScode 格式化代码保存时使用ESlint修复代码

    前言 eslint  vs code 新买的电脑啊啊西 装VScode 配置格式化代码保存时使用ESlint修复代码头快炸了,不建议初学者用,太费时间了: 终于搞定---再也不要担心缩进,函数(名)和 ...

  8. sublime text保存时删除行尾空格

    打开sublime text,点击在Preferences, Settings-User打开的用户配置中加入以下一行: "trim_trailing_white_space_on_save& ...

  9. eclipse编辑jsp快捷键保存时特别卡的解决方法

    今天eclipse用着用着的时候,每次编辑jsp页面快捷键保存的时候要等半天才保存好,特别的卡.搞的很蛋疼.上网搜了下有解决办法 Window -> Preference -> Gener ...

随机推荐

  1. P5404-[CTS2019]重复【KMP,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P5404 题目大意 给出一个字符串\(S\),然后求有多少个长度为\(m\)的串\(T\)满足.无限多个串\(T\) ...

  2. 分享一下我的Python自学历程,分享下我自己学习方法

    其实关于编程这事儿没有接触的那么早,大一的时候没什么关注点,有一门课是vb,一天天的,就抄抄作业啥的就完事儿了.当时也觉的自己不是学编程的料,想着以后估摸也不会干开发相关的工作. 我的自学历程 阴差阳 ...

  3. Python3入门系列之-----return返回值,我终于懂了

    前言 初学者学习return的用法有点蒙,不知道它的作用是什么?返回的是什么?在什么时候要用?小伙伴也可能会遇到和我同样的困扰,给大家举个例子,马上就明白了. 同一段代码,函数中带return和没有r ...

  4. WPF进阶技巧和实战03-控件(5-列表、树、网格01)

    列表控件 ItemsControl为列表项控件定义了基本功能,下图是ItemsControl的继承关系: 在继承自ItemsControl类的层次结构中,还显示了项封装器(MenuItem.TreeV ...

  5. 深入浅出WPF-06.Binding(绑定)01

    Binding(绑定) 先上图,再解释 针对这个图,我们先来说说什么是Binding. Binding就是一个桥梁,建立在数据和UI之间的桥梁.既然是数据驱动,那么我们就把数据称之为"源&q ...

  6. 面试官一口气问了MySQL事务、锁和MVCC,我

    面试官:你是怎么理解InnoDB引擎中的事务的? 候选者:在我的理解下,事务可以使「一组操作」要么全部成功,要么全部失败 候选者:事务其目的是为了「保证数据最终的一致性」. 候选者:举个例子,我给你发 ...

  7. feign的一个注解居然隐藏这么多知识!

    引言 最近由于业务的需要,需要接入下阿里云的一个接口,打开文档看了看这个接口看下来还是比简单的目测个把小时就可以搞定,但是接入的过程还是比较坎坷的.首先我看了看他给的示例,首先把阿里云文档推荐的dem ...

  8. springcloud组件之hystrix服务熔断,降级,限流

    hystrix 简介 Hystrix是什么 在分布式环境中,许多服务依赖项中的一些必然会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互.Hystrix通过 ...

  9. 题解 [CTSC2006]歌唱王国

    题目传送门 Desctiption 见题面. Solution 人类智慧... 考虑这样一个赌博游戏,现在有一个猴子,它随机从 \(1\sim n\) 中选一个打出来.现在有若干个赌徒,他们一开始都有 ...

  10. bzoj4094 && luogu3097 最优挤奶

    题目大意: 给定n个点排成一排,每个点有一个点权,有m次修改,每次改变某个点的点权并将最大点独立集计入答案,输出最终的答案 其中\(n\le 40000\ , \ m\le 50000\) QWQ说实 ...