在利用MATLAB绘制论文图像的过程中,基本上针对每个问题都要搜索很多才能找到答案,在这里总结一下可能会用到的设置。
分点给出需要的设置:
1.图像的线宽,线型和颜色
线宽直接调节 Linewidth;Color可以通过“16进制数值”或者“RGB三元组”修改;
配色是门学问,附一下我搜索到的比较经典的配色:
线型Linestyle可以参考下面四种:
受同学启发,图中的线条有时不仅需要通过颜色来区分,还需要叠加线型来区分(因为有些刊物的印刷是黑白的)
plot(t,y(:,1),'LineWidth',1.5,'Color',"#2D2C56",'linestyle','-');%实线
plot(t,y(:,2),'LineWidth',1.5,'Color',[0.1 0.45 0.9],'linestyle','--');%虚线
2.修改坐标轴的长宽比例
论文作图有时候需要绘制类似于长方形的图来优化排版,但默认设置画出来的更类似于正方形。绘制出的figure的坐标轴比例可以通过拖动图像框边界进行修改,但是要绘制一系列图像的时候为了保持图像间的一致,最好还是采用代码进行统一设置。
可以使用pbaspect(ratio)
设置当前坐标区的图框纵横比。图框纵横比是 x 轴、y 轴和 z 轴的相对长度。将ratio指定为由正值组成的三元素向量,以表示 x 轴、y 轴和 z 轴长度的比率。例如,[3 1 1]
指定 x 轴的长度等于 y 轴和 z 轴长度的三倍。如需轴长度在所有方向上都相等,请使用 [1 1 1]
。
pbaspect([2 1 1]) %修改坐标轴长宽比例为2:1
注:如果绘制的是二维图像还是需要输入三元素向量,修改前两个元素实现需要长宽比即可。
3.设置坐标轴的字体字号以及颜色
set(gca,'fontsize',14,'fontname','Times New Roman'); %坐标轴字体字号
% 坐标轴的颜色默认是灰色,将其指定为黑色
set(gca,'xcolor','k');
set(gca,'ycolor','k');
4.设置坐标轴标签的字体字号
xlabel('t/s','fontname', 'Times new roman','fontSize',14);
ylabel('x','fontname', 'Times new roman','fontSize',14);
5.设置图例的字体字号
h=legend('x_1','x_2','x_3');
set(h,'FontName','Times New Roman','FontSize',14)
6.避免导出的图像有白边
方法一:较为简单的设置,可以直接将图像的白边消除
set(gca, 'LooseInset', [0 0 0 0]);%避免Figure白边
上面这种方法是一点白边都不会留下来的,可以满足大多数要求;但我在绘图过程中发现可能会让图像的最右边坐标轴也被裁掉,避免这个问题需要对白边范围进行调整,即另一种方法:
方法二:可以先调节窗口尺寸,代码中我设置的是窗口长宽比为5:3(pos(3)为窗口长,pos(4)为窗口宽)
接下来修改留白范围
set(gca, 'Position', get(gca, 'OuterPosition') - get(gca, 'TightInset') * [-1 0 1 0; 0 -1 0 1; 0 0 1 0; 0 0 0 1])这句代码与方法一效果相同,可以在这个基础上通过加上数组微调窗口的长宽
pos=get(gcf,'Position'); % 获取窗口尺寸信息
pos(3)=pos(4)/3*5; % 改变窗口宽度(倍数根据长宽比自己确定)
set(gcf,'Position',pos) % 更新窗口尺寸
set(gca, 'Position', get(gca, 'OuterPosition') - ...
get(gca, 'TightInset') * [-1 0 1 0; 0 -1 0 1; 0 0 1 0; 0 0 0 1]+[0 0 -0.03 0]);%最后面的加上的【0 0 -0.03 0】是我根据实际图像效果手动输入数字再调整了下宽度大小,如果大小满意这项就不需要了
7.以pdf格式导出图像
png格式导出的图像在论文中放大时候模糊的,使用pdf格式会避免这个问题
set(gcf,'Units','Inches');
pos = get(gcf,'Position');
set(gcf,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)]);
filename = 'mypaper.pdf'; % 设定导出文件名
print(gcf,filename,'-dpdf','-r0') %导出pdf并避免pdf白边
代码中的'-r0'是必须加上的,否则导出的图像就是一整个白页中间有一幅图,要想插入到论文里面还得进行裁剪;加上“'-r0'后导出的图像可以直接使用。
最后给出汇总的代码(可能绘图中用不到这么多设置,取需要的即可)
plot(t,y(:,1),'LineWidth',1.5,'Color',"#2D2C56",'linestyle','-');
hold on;
plot(t,y(:,2),'LineWidth',1.5,'Color',[0.1 0.45 0.9],'linestyle','-');
axis([0 10 0 8]); %设置坐标轴范围
pbaspect([2 1 1]) %修改坐标轴长宽比例
set(gca,'fontsize',14,'fontname','Times New Roman'); %坐标轴字体字号
xlabel('t/s','fontname', 'Times new roman','fontSize',14);
ylabel('x','fontname', 'Times new roman','fontSize',14);
h=legend('x_1','x_2');
set(h,'FontName','Times New Roman','FontSize',14)
% 坐标轴默认是灰色,将其指定为黑色
set(gca,'xcolor','k');
set(gca,'ycolor','k');
set(gca, 'LooseInset', [0 0 0 0]);%避免Figure白边方法一
% 导出到pdf
set(gcf,'Units','Inches');
pos = get(gcf,'Position');
set(gcf,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)])
filename = 'Mypaperfigure.pdf'; % 设定导出文件名
print(gcf,filename,'-dpdf','-r0') %导出pdf并避免pdf白边
close(gcf)