Matlab所制作的插图,如不进行一定的修正,其四周往往存在一定范围的白边,换句话说就是绘图区域未能填充整个画布。
白边的存在会影响图片显示效果,有时也会给论文的排版造成一定麻烦。
要想消除白边,简单的方法,在导出插图后,用其它软件的‘裁剪’功能,手动裁掉白边。
但这种办法,处理一两张图片还好,如果多了,那简直是灾难。
所以要想办法在源头解决问题,避免过多的机械劳动。
---------------
方法1
LooseInset是Matlab坐标轴的一个隐藏属性,其默认值是[0.13, 0.11, 0.095, 0.075],从而为刻度标记留出一定的空间。
Apparently, LooseInset, which is automatically set to a factory value of [0.13, 0.11, 0.095, 0.075], is used by Matlab axes to reserve a small empty margin around the axes, presumably to enable space for tick marks.
若将其清零,则可以消除白边。
set
效果如图:
方法2
另一种方法是结合TightInset属性与LooseInset属性。
在Matlab中,坐标轴的Positon(蓝色),OuterPosition(红色)与TightInset(品红)范围如图所示。
When determining the size of the axes, it seems that Matlab takes into account larger of the documented TightInset and the undocumented LooseInset. So, perhaps a better generic solution would be the one suggested by another blog reader:
set
效果与1基本一致:
方法3
参考matlab画图,如何消除图形中多余的空白区域,通过改变坐标区的‘Position’信息以消除白边。
set
方法4
在File>export setup中,选择‘Expand axes to fill figure’。
效果与上述三种方法效果类似。
方法5
有时候,会遇到坐标轴刻度间距一致(axis equal),且数据纵横坐标范围相差较大的情况。
比如这样:
或是这样:
其中,右图坐标区的空白都可以用axis tight消除:
这时,若使用前述方法,往往只能在一个方向去掉白边。
主要原因在于窗口的尺寸是不变的,坐标区的纵横比又是锁定的。
一种方法是,计算坐标区长度与宽度的比例,通过改变figure窗口尺寸以使坐标区填充画布:
pos
该方法对其它情况其实同样有效,只是窗口、坐标区尺寸的设置会麻烦些。
关于尺寸设置的相关内容见:
阿昆:Matlab、Visio导出精美论文插图——位置与尺寸设置zhuanlan.zhihu.com