Chinaunix首页 | 论坛 | 博客
  • 博客访问: 671644
  • 博文数量: 90
  • 博客积分: 1631
  • 博客等级: 上尉
  • 技术积分: 1413
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-15 22:43
文章分类
文章存档

2017年(8)

2016年(9)

2015年(11)

2014年(10)

2013年(9)

2012年(9)

2010年(2)

2009年(10)

2008年(22)

我的朋友

分类: C#/.net

2015-06-18 00:09:22

用matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。

我摸索出比较好的方法是如下的代码:

%%%%%%%%%%%%%%%%%%%%%

%plot your figure before

%%%%%%%%%%%%%%%%%%%%%

% figure resize
set(gcf,'Position',[100 100 260 220]);
set(gca,'Position',[.13 .17 .80 .74]);
figure_FontSize=8;
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
set(findobj('FontSize',10),'FontSize',figure_FontSize);
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 

解释:

set(gcf,'Position',[100 100 260 220]);
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是7cm

set(gca,'Position',[.13 .17 .80 .74]);
这句是设置xy轴在图片中占的比例,可能需要自己微调。

figure_FontSize=8;
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
set(findobj('FontSize',10),'FontSize',figure_FontSize);

这4句是将字体大小改为8号字,在小图里很清晰

set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

这句是将线宽改为2

 

注:引用收藏,备用!

 

 

解决Matlab输出图的文字出界问题

Matlab画图的一大问题是“所见非所得”(WYSINWYG),即你明明看到在屏幕上图好好的,但export一下后字的位置全变样了,如果指定了boundary的话(也就是给figure设定Position)还会把xlabel,ylabel甚至title给自动cut掉,实在是很痛苦。然而大规模地做图时,为了方便修改确保“一键输出”又是非常必要的。那么怎么解决文字,特别是轴的文字出界问题呢?

这个问题在Help里面的Printing and Exporting里面是找不到的,因此也郁闷了我一段时间,今天终于在Graphics Handle里面发现这个问题需要修改轴的句柄。知道修改哪以后这个问题就简单了,如:

set(gca, 'Position', [0.2 0.2 0.7 0.7]);

Position仍然是[ left, bottom, width, height ]的格式,不过这里采用了标准化单位,即满图是[0 0 1 1]。鉴于Matlab的default设置往往不能满足要求,这个设置还是很有用的。以前总觉得图形句柄麻烦,就没仔细研究,现在才发现这种懒带来的代价更大。

阅读(2309) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~