加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab导出图空白边界如何去掉

(2011-02-14 13:56:36)
标签:

杂谈

分类: Matlab技巧
    LaTex_Fun在博文LaTeX技巧486:Matlab导出图空白边界如何去掉(http://blog.sina.com.cn/s/blog_5e16f1770100pakj.html)中提到了一篇Matlab Digest上的文章(http://www.mathworks.com/
company/newsletters/digest/december00/export.html),能够解决Matlab导出图空白边界的问题,
这里把这篇文章的要点翻译一下。

    首先下载一下文章里面的四个m文件,其作用分别如下:
exportfig.m   ---   将figure输出到一个文件
previewfig.m  ---   预览figure
applytofig.m  ---   将针对输出的设置应用到figure上
restorefig.m  ---   将figure恢复到初始状态
将下载好的文件所在目录加入Matlab的path中。

    这篇文章主要解释了exportfig.m的四个特征:
  1. Tight bounding box:给图形加一个紧密的边界框
  2. Color-to-style mapping:将不同的颜色转换成不同的线型
  3. Preferences:设置参数
  4. Separate text and bitmap output:分离图片中的文字和位图
为了解释这四个特征,先看下面这段代码:
x=0:.1:20;
y1=sin(x);
y2=cos(x);
plot(x,y1,x,y2);
legend('sin','cos');
axis([0 20 -2 2]);
grid on;
title('Plot of sin and cos');
xlabel('x');


将得到的figure调整成如下模样:

http://s9/bmiddle/65d158df49c38195bd498&690

“紧密边界框”选项的作用就是将绘图(plots)及标签(labels)紧密地排在一个
figure内,不留任何多余空白。其命令形式为:

exportfig(gcf,'test.eps','bounds','tight');


为了看这个命令的效果,用previewfig命令:

previewfig(gcf,'bounds','tight');

可以看到“紧密边界框”的效果如下:
http://s14/middle/65d158df49c385a4633bd&690

与第一张图有了很大差别。

如果预览的效果合适,就可以用applytofig命令将这种加框的效果应用到figure上,命令形式如下:

oldstate = applytofig(gcf,'bounds','tight');

oldstate这个变量存储了figure在变化前的状态,以备恢复使用。restorefig这个命令用来恢复figure至
某一状态,命令形式如下:

restorefig(gcf,oldstate);

注意如果多次修改figure,要保存好各种更改前的状态,以便能够恢复到初始状态。

exportfig命令的另外一个功能就是将图中曲线颜色的差别转换成线型的差别,以便满足某些出版社
使用“黑白图”的要求。命令的形式如下:

exportfig(gcf,'test.eps','linestylemap','bw');

注意,这里的“bw”是默认的一种颜色和线型的转换关系。当然,也可以使用用户自己定义的匹配关系,
形式如下:

exportfig(gcf,'test.eps','linestylemap','mylinemap');

其中,mylinemap就是自定义的匹配关系的函数名。在本文的例子中,采用默认的匹配关系,命令如下:

previewfig(gcf,'bounds','tight','linestylemap','bw');

效果如下:

http://s12/middle/65d158df49c38c746994b&690

为了一次修改figure的多个效果,可以将多个参数写入一个结构体,形式如下:

opts = struct('bounds','tight','linestylemap','bw');

然后调用这个opts,形式如下:

previewfig(gcf, opts);

或者直接使用如下命令:

previewfig(gcf,'bounds','tight','linestylemap','bw');

当然,如果有一种设置你很喜欢,想作为以后的默认设置,可以采用如下命令:

setpref('exportfig','defaults',opts);

这样的话,以后只要输入

previewfig(gcf);

就能将figure变成符合个人要求的图片了。这些设置将会保存下来,以后再使用时,还是将这个设置
作为默认设置来使用。

最后一个要描述的exportfig命令的特征是“图文分离”。使用命令

exportfig(gcf,'test.eps','separatetext',1);

可以将图中的位图存入一个文件test.eps,将文字存入另外一个文件test_t.eps。在使用的时候,
将这两个图重叠在一起使用,比如图片的高度设定为3inch,则下面这段代码

\includegraphics{test.eps}

\vskip -3in
\includegraphics{test_t.eps}

先绘制test.eps,然后回退3inch,然后在绘制test_t.eps,这样两个图就完全重合了。这种方法
能够在某些情况下提高文字的清晰度。

这就是exportfig的最重要的一些特征,其他的可以看相关的帮助文档。
命令是

help exportfig

跟查看任何命令的方法都一样,呵呵。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有