最近用 matlab画图,需要导出图片,但是发现经过拉伸或者改变了标注的位置以避免挡住图形之后,无法确保导出的每一张图片具有相同的大小。就算可以手动调整图片大小,由于白色背景,也无法确保图片并列起来之后在论文或者需要排版的文档中可以保持在同一直线上。因此,搜索问题,找到好的解决方案。 转载至此,供翻阅。
原文地址:http://nanokaleaf.blog.163.com/blog/static/1808303022012101041553362/、
figure图片存储的时候,使用saveas命令,如果不做设定,只能存储默认大小,但是有的时候需要存储特定比例拉伸的图片。
matlab里面figure相关对象的关系是: screen→figure→axis,所以在设置图片大小的时候,先设定figure相对于screen的位置和大小,然后设定axes相对于figure的位置和大小。
图画出来之后,如下命令就可以储存特定大小的图片。下面给出两种方法。
法一 截图
%=========================================================
set(gcf,'position',[100,100, 500, 300]); %设定figure的位置和大小 get current figure
set(gcf,'color','white'); %设定figure的背景颜色
A=getframe(gcf);
imwrite(A.cdata,'try.png') %存储调整过大小的图片
%==================================================
还可以根据需求调整坐标轴的位置和大小,比如不想要白边一类
%====================================================
set(gca,'DataAspectRatio',[3,4,1]); %调整坐标轴比率 get current axes
set(gca,'position',[0,0,1,1]); %调整坐标轴位置
%======================================================
最后说明一下,saveas存储的大小是默认大小,imwrite相当于截屏;存图片的时候要养成好习惯,顺便存一个figure,以方便以后修改。
saveas(gcf,'tt.fig');
法二 设定保持长宽比存图
如果要发表paper,上面这种做法就不可取了,因为存下的图片是截图;不少杂志(比如PR系列),直接说了,Not Screen!(截图丢失信息,不方便出版方的再次排版一类)。
图片画出来以后,执行以下命令,就可以保持长宽比率保存图片(但是图片的绝对大小会变化)。
set(gcf,'color','white','paperpositionmode','auto');
saveas(gcf,'exprimentLightBundles.eps','psc2');
个人觉得如果期刊会议没有特殊要求,使用截图插入的方式还是可行的。供参考。