又到一年论文季,没想到临近投稿的我居然会被图片的清晰度打败,需要子母图的时候,我直接使用powerpoint进行拼接,多次png+另存为,图已经糊出了新高度,那种超级糊图在论文里应该是投不出去的吧。。。但是,有一天我突然坐在电梯上,就悟了,终于体会到矢量图和位图在使用中的巨大差别,具体详见添加链接描述,在积极寻找可以拼接的文件的软件的同时,我突然想起来,matlab是可以作图中图的…这样能减少后期的很多问题。
so,举一个简单的栗子,有三条线
syms x;
x=0:0.05:1;
y1=x.^2;
y2=1-x.^2;
C6=0.2+x-x;
plot(x,y1,'b*',x,y2,'r-',x,C6);
很正常的一个图:
如果需要指定位置来绘制图中图呢?
axes(‘position’,[0.4 0.7 0.5 0.7]); 代表小图的位置,matlab中以figure区域左下坐标为(0,0),右上为(1,1)
所以该段代码中的小图左下角对应距整体长度*0.4处(从左起),整体高度的0.7处(从下起,且可以认为是坐标值),而子图的宽度为原有的0.5,高度为原有的0.7,这样子图的位置和大小就唯一确定啦,大家可以试试
x=0:0.05:1;
y1=x.^2;
y2=1-x.^2;
C6=0.2+x-x;
figure
plot(x,y1,x,y2,x,C6);
axes('position',[0.4 0.7 0.5 0.7]);
plot(x,y1,'b*',x,y2,'r-',x,C6);
xlim([min(0.6),max(1)]);
子图框成图后依然可以自行移动位置,更改大小
但能够发现,子图线性和颜色变为默认,与母图不符合:
这时可以重新设置一下
plot(x,y1,,x,y2,,x,C6);↓
plot(x,y1,'b*',x,y2,'r-',x,C6);
这样在另存为的时候,上面就有这个子母图啦
倘若需要给子图加label,title和grid,方法同母图
若在子图中含有多条曲线且不能合并,可用hold on—hold off
另一种方法:
clf resett=0:0.1:10;
plot(t,exp(-10*t).*sin(20*pi*t))
h2=axes('Position',[0.5 0.5 0.3 0.3])
%比如插入x\in [1 2]之间的函数变化
tt=1:0.1:2; %这里在绘图前直接定义了tt的范围
plot(tt,exp(-10*tt).*sin(20*pi*tt))