Matlab自动消除论文插图白边的7种方法

通过Matlab所绘制的插图,如不进行一定的调整,其四周往往存在一定范围的白边

白边的存在会影响数据展示效果,有时也会给论文的排版造成一定麻烦

要想消除白边,一种简单的方法是,在导出插图后,用其它软件的‘裁剪’功能,手动裁掉白边。

然而,这一办法,处理一两张图片还好,一旦量多起来,那简直是灾难

所以要想办法在源头解决问题,避免过多的机械劳动

目前消除白边的思路主要有两种,一种是画布填充,一种是直接裁剪

画布填充法作用于图片导出前,通过一定的手段使绘图区域填充整个画布,其优点在于导出图片后不会改变画布尺寸,但操作相对复杂

直接裁剪法作用于图片导出过程中,通过一定的图片导出工具直接识别、裁剪画布中白边部分,其优点在于操作简单,但会导致画布尺寸的改变

由于两种方法作用于不同的作图阶段,因此可以结合使用。


方法1

LooseInset是Matlab坐标轴的一个隐藏属性,其默认值是[0.13, 0.11, 0.095, 0.075],从而为刻度标记留出一定的空间。

若将其清零,则可以消除白边

set(gca, 'LooseInset', [0,0,0,0]);

效果如下图所示:

方法2

另一种方法是结合TightInset属性与LooseInset属性

Matlab中,坐标轴的Positon(蓝色),OuterPosition(红色)与TightInset(品红)范围如图所示。

set(gca,'LooseInset',get(gca,'TightInset'))

效果与1基本一致:

方法3

通过改变坐标区的‘Position’信息以消除白边

set(gca, 'Position', get(gca,'OuterPosition') - ...    get(gca,'TightInset') * [-1 0 1 0; 0 -1 0 1; 0 0 1 0; 0 0 0 1]);

方法4

在File>export setup中,选择‘Expand axes to fill figure’。

效果与上述三种方法效果类似。

方法5

有时候,会遇到坐标轴刻度间距一致(axis equal),且数据纵横坐标范围相差较大的情况。

比如这样:

或是这样:

左图没加‘axis equal’,右图加了‘axis equal’。其中,右图坐标区的空白可以用axis tight消除:

这时,若使用前述方法,往往只能在一个方向去掉白边。

主要原因在于窗口的尺寸是不变的,坐标区的纵横比又是锁定的。

所以,可以计算坐标区长度与宽度的比例,通过改变figure窗口尺寸以使坐标区填充画布

pos=get(gcf,'Position'); % 获取窗口尺寸信息pos(3)=pos(4)/3; %将窗口宽度设为高度的三分之一set(gcf,'Position',pos) % 更新窗口尺寸

该方法对其它情况其实同样有效,只是窗口、坐标区尺寸的设置会麻烦些。

方法6

利用export_fig图片导出工具,在导出图片的同时可直接裁剪白边:

export_fig test.png -r300

方法7

利用exportgraphics函数,同样可以在导出图片的同时可直接裁剪白边:

exportgraphics(figureHandle,'test.png','Resolution',300)

其效果同export_fig类似。

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值