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三年了,但至今竟然都看不到一本能讲如何在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作图调格式代码
- MATLAB Plotyy作图及句柄设置图形格式
- jpg格式的图像与pgm格式的图像互转 matlab代码
- 有关matlab画图格式的部分代码
- Matlab作图及图形格式设置
- Matlab代码-遍历文件夹下所有指定格式的图像
- MATLAB 作图系列(一) 有源代码+效果图
- 让Label等控件支持HTML格式的代码? 使用NSAttributedString:
- 基于PCA的人脸识别的Matlab实现代码
- php导出word格式数据的代码分享
- MAT、BMP、PNG文件格式说明及MATLAB中文件的保存方式
- matlab鼠标拖动图形代码
- js验证电子邮箱格式是否正确的代码
- matlab操作之--读取指定文件夹下的“指定格式”文件
- pgm格式文件及其在matlab中的读取存储方法(1)
- 各种时间日期格式代码
- 斯坦福大学机器翻译代码实践笔录--matlab显示中文
- matlab与机器学习(一)基础知识(含代码解析)
- 用Delphi从内存流中判断图片格式的代码
- C#一行代码打开任何格式的本地文档,word,ppt,mp3,remb都可以