您的位置:首页 > 编程语言 > MATLAB

MATLAB作图调格式代码

2012-03-29 22:13 232 查看
【原文转载于http://blog.renren.com/share/248921700/11375413652

我学会MATLAB三年了,但至今竟然都看不到一本能讲如何在MATLAB里做figure formatting的中文书,国内(“我们这儿”)对排版的重视程度简直低得令人发指。

今天在老板和办公室其他人的帮助下,终于捣鼓出一个可以比较方便地用MATLAB生成标准格式图片的代码了。

首先声明一下,我认为在文章里出现下面这样的图(MATLAB缺省画出来的图),是很丑很土鳖的。如果不同意的,别往下看了,直接关网页吧……



 

美观的图应该是这样的:



第二,说一下文章中的插图的绝对尺寸:

一般情况下的坐标轴图(比如上图),宽度不应该超过纸张上的行宽度(text width)的一半,超过了就很丑很土鳖了(图片高度可以随意)。以美国通用的letter size paper为例:

Letter sized paper 宽8½ in(英寸),高11 in。一般来说页边距为上下左右各1 in,所以图片宽度不应该超过( 8½ in-2x1 in)÷2 = 3¼ in ≈ 3 in。

另外,图中的数字和坐标轴文字的大小(font size)应该是9 points,英文的正文大小是11 pt(汉字的“五号”相当于10.5 pt)。

所以就有了如下的MATLAB代码:

fig1 = figure;                                              % 给要画的图起个名字,“fig1”,学名叫“门把手”(handle)

xSize = 3; ySize = 2.25;                            %  图片的长和高,3英寸 x 2.25英寸

xLeft = (8-xSize)/2;  yTop = (12-ySize)/2;  

set(fig1,'Units','inches');                                %  单位为英寸

set(fig1,'position',[xLeft yTop xSize ySize]);  % 图片在屏幕上显示的位置

set(fig1,'PaperUnits','inches');                       %  单位为英寸

set(fig1,'PaperPosition',[xLeft yTop xSize ySize]);  % 图片在“纸上”显示的位置

fig1 = plot(x,y,'k');             %  这句话才是在画图

set(gca,'fontsize',9);           % 坐标轴上的数字字号为9 pt

h1 = xlabel('t (s)');  h2 = ylabel('u (m)');    % 坐标轴名称

set(h1,'fontsize',9);             %  X轴的字号为9 pt

set(h2,'fontsize',9);             %  Y轴的字号为9 pt

print('-djpeg','-r600','CuteFred')          % 以600 dpi的分辨率输出一个名为 CuteFred.jpg 的 JPG 图片

print('-depsc','-tiff','-r300','CuteFred')  % 以300 dpi的分辨率输出一个名为 CuteFred.eps 的 EPS 图片

print('-dpdf','CuteFred')                       %  输出一个名为 CuteFred.pdf 的 PDF 图片

print('-dmeta','-r300','CuteFred')         % 输出一个名为 CuteFred.emf 的 EMF 图片

%%% 这四个图片可以同时输出,保存在代码所在的文件夹里

 

画好了之后就可以不加任何修改地放到文档当中了,土鳖一点的小盆友可以把jpg图片粘贴到word里(分辨率至少要300 dpi),略微高风亮节的小盆友建议用emf图片粘贴到word里,Geek们就在LaTeX里直接插入eps或者pdf图片吧——到时候要改动图片的时候只需要在MATLAB里调好代码然后按F5就行,太方便鸟。

*) 用以上代码生成的pdf图片没有自动裁边(crop),所以如果要在pdfLaTeX或者XeLaTeX里用这个pdf文件,还得自己crop(用Adobe Acrobat或者去http://www.pdfscissors.com),其实更麻烦。我目前也不知道解决办法。

-- THE END --

a379
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab plot adobe 文档