分类: 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设置往往不能满足要求,这个设置还是很有用的。以前总觉得图形句柄麻烦,就没仔细研究,现在才发现这种懒带来的代价更大。