在使用LaTex撰写论文的时候,图片格式大多会使用PDF或者EPS格式的,EPS格式的个人使用的比较少,所以在这里主要是介绍PDF格式。一般在使用MATLAB作图的时候经常会碰到做出的图有白边的情况,目前已经有很多人对于如何消除白边做了很多的研究工作也有了很多方法。如下面的这些连接:
阿昆:Matlab论文插图消除白边的5种方法zhuanlan.zhihu.com以及最为基础的搞清楚matlab中的figure的Position和坐标的Position的关系的文章:
阿昆:Matlab、Visio导出精美论文插图——位置与尺寸设置zhuanlan.zhihu.com但是上面的在消除白边的时候似乎都改变了图片的大小,对图进行了一定的伸缩。从而不能比较好的控制图片的大小[1][2]。通过上面的文章[3]可以看到,在画图的时候主要是控制figure的position和坐标的position从而来控制图片的大小。所以在画图之前应该确定自己想要输出的图片Figure是固定的还是里面的Axes是固定的。
figure的position和Axes尺寸的关系。
所以在作图的时候可能希望Axes尺寸是固定的,所以在进行上面的操作的时候的Axes的Position会有一定的伸缩,导致画出的图片大小可能存在不一致的情况。所以如果要控制一致的情况下,可以有下面三种方法:
1.直接控制figure和Axes的边距来消除白边,具体的边距大小需要人去看。
figure
由于输出的pdf可能需要裁边,所以MATLAB的帮助文档里面也提供了相应的控制输出pdf和figure相匹配的修改方法如下:
fig
通过这样的方法,那么输出的pdf没有白边。
2.通过matlab fileechange提供的工具箱export_fig来进行裁边和输出pdf,这个需要注意的是Interpreter使用tex的时候,如果使用LaTex语言(MATLAB提供一些可以在Interpreter为tex情况下使用的一些特殊字符,基本上包含了常用的大多数的字符),在输出的图片的时候会存在乱码。Interpreter必须要选择latex。
3.通过LaTex自带的一个PDF裁边工具pdfcrop来对输出的PDF进行裁边,这样只需要设置Axes的大小位置,通过pdf裁边就可以实现图片的大小。
很多时候我们希望输出的Axes大小固定,输出的figure大小也固定,并且还没有白边。目前似乎比较难控制,只能通过第一种方法来固定Axes的大小和Figure的大小来确保输出的PDF大小是一致的,但是这种方法因为是通过人来观察是否有白边,那么可能消除的白边效果没有那么好。但是一般在大多数的情况下,只需要确保figure的大小就可以[4][5][6]
由于时间原因,写的时候比较混乱,有问题请指教。
参考
- ^https://zhuanlan.zhihu.com/p/131602083
- ^https://zhuanlan.zhihu.com/p/57606534
- ^https://zhuanlan.zhihu.com/p/114980765
- ^https://ww2.mathworks.cn/help/matlab/creating_plots/save-figure-with-minimal-white-space.html?s_tid=srchtitle
- ^https://ww2.mathworks.cn/help/matlab/creating_plots/automatic-axes-resize.html?s_tid=srchtitle
- ^https://ww2.mathworks.cn/help/matlab/ref/matlab.graphics.axis.axes-properties.html