看了很多关于MATLAB绘制图片的文章,很多时候他们会使用其他发辅助软件来对MATLAB绘制好的图片进行编辑或者进一步的修改。如会有使用VISIO对其坐标轴或者其他进行注释,或者采用AI来对其进行进一步的修改。
随着MATLAB版本的不断的更新,目前MATLAB本身就自带了很多强大的对图片进行编辑的函数,修改出来的效果也很不错。并且使用函数对图片进行控制,可以更好的保证输出的每一张图片格式统一。
下面介绍MATLAB在论文作图的时候最常用的几个对图片进行修改的函数。
x = linspace(-2*pi,2*pi);
y1 = sin(x);
y2 = cos(x);
p = plot(x,y1,x,y2);
通过上面的代码绘制的函数如下图:
(1)首先可以对图片中的绘制的线进行更改,在高级版本的MATLAB中,线条是一个对象,可以使用圆点法对其进行修改,可以查询其属性。比较常用的属性有:
p(1).LineWidth = 2;%设置第一个线条的线宽为2磅
p(2).Marker = '>';%设置第二个线条的标记marker为'>'
p(2).LineWidth = 2;%设置第二个线条的线宽为2磅
p(1).Color = [0.894117647058824 0.121568627450980 0.149019607843137];%对颜色进行设置
p(2).Color = [0.192156862745098 0.498039215686275 0.717647058823529];%对颜色进行设置
绘制出来的图片如下:
该颜色设置采用的是:
此外还可以设置marker的标记的位置,但是这种方式设置需要在plot的时候对其进行设置。
x = linspace(-2*pi,2*pi);
y1 = sin(x);
y2 = cos(x);
p1 = plot(x,y1,'->','MarkerIndices',1:5:length(y1));%每5个数据点标记一次
hold on
p2 = plot(x,y2,'-o','MarkerIndices',[1 50 100]);%在第一个,第5个,第10个位置标记
p1(1).LineWidth = 2;%设置第一个线条的线宽为2磅
p2(1).LineWidth = 2;%设置第二个线条的线宽为2磅
p1(1).Color = [0.894117647058824 0.121568627450980 0.149019607843137];%对颜色进行设置
p2(1).Color = [0.192156862745098 0.498039215686275 0.717647058823529];%对颜色进行设置
绘制处的图如下:
如果需要对Line的其他属性进行设置,可以查询MATLAB提供的help说明文件,如上连接。
(2)坐标设置
之后可以对坐标区进行设置了。
首先可以设置坐标区的标签
ax = gca;
ax.XLabel.String = 'Time (\circC)';%设置X坐标轴名称,随便输入的单位只是为了举例
ax.XLabel.FontSize = 12;%设置X坐标轴字体大小
ax.XLabel.FontName = 'Arial';%设置X坐标轴字体名称
ax.YLabel.String = 'Amplitude';%设置Y坐标轴名称
ax.YLabel.FontSize = 12;%设置Y坐标轴字体大小
ax.YLabel.FontName = 'Arial';%设置Y坐标轴字体名称
绘制如下:
目前MATLAB在默认的解释器tex下,已经支持大多数的latex语法,不需要选择latex解释器了。这就极大的了方便了,在对图进行修改的时候可以使用latex编写公式,放到图中。
接下来可以对标签进行设置
ax.YTick = -1.5:0.5:1.5;%Y轴刻度
ax.XTick = -2*pi:pi:2*pi;%X轴刻度
ax.XTickLabel = {'-2\pi','-\pi','0','\pi','2\pi'};%X轴刻度名称
ax.XLim = [-2*pi 2*pi];%X轴上下限
ax.YLim = [-1.5 1.5];%Y轴上下限
ax.FontSize = 12;%坐标轴字体大小
ax.FontName = 'Arial';%坐标轴字体名称
绘制的图如下:
更多的可以查看AXES属性说明:
(3)图例添加
有的时候需要在论文中添加图例,可以使用图例相关的函数。
lgd = legend('\it{P}_{\rm{ev}}\rm =100kPa','\it{P}_{\rm{ev}}\rm =200kPa');
%图例名称,可以看到即使在默认tex解释器下,可以正常使用latex语法,此处仅为举例
lgd.NumColumns = 2;%设置图例的列数
lgd.Box = 'off';%图例外围无边框
lgd.FontSize = 12;%图例字体大小
lgd.FontName = 'Arial';%图例字体名称
绘制出的图如下:
可以看到,为图添加了图例。
(5)图片大小设置
%设置画布的大小以及在屏幕中间位置
set(gcf,'Units','centimeters','Position',[1.4 10 16 10.5])
%设置坐标区图的大小和在画布中位置
set(gca,'Units','centimeters','Position',[2 1.2 12 9])
设置完成后输出的图片,由于新版的matlab可以自动裁边,所以对于画布大小设置就没太大关系了,只需要设置gca的大小,即你绘制图的大小就可以。
(6)图片裁白边及保存
在新版的MATLAB2020a及以后的版本,可以使用exportgraphics输出各种格式图片来满足论文要求,并且可以裁掉白边。
exportgraphics(gcf,'peaks.png','Resolution',300);%输出分辨率为300的PNG图片
exportgraphics(gcf,'peaks.pdf','ContentType','vector');%输出矢量pdf图片
exportgraphics(gcf,'peaks.eps');%输出矢量eps图片
(7)完整代码
x = linspace(-2*pi,2*pi);
y1 = sin(x);
y2 = cos(x);
p1 = plot(x,y1,'->','MarkerIndices',1:3:length(y1));%每3个数据点标记一次
hold on
p2 = plot(x,y2,'-o','MarkerIndices',1:3:length(y2));%每3个数据点标记一次
p1(1).LineWidth = 2;%设置第一个线条的线宽为2磅
p2(1).LineWidth = 2;%设置第二个线条的线宽为2磅
p1(1).Color = [0.894117647058824 0.121568627450980 0.149019607843137];%对颜色进行设置
p2(1).Color = [0.192156862745098 0.498039215686275 0.717647058823529];%对颜色进行设置
ax = gca;
ax.XLabel.String = 'Time (\circC)';
ax.XLabel.FontSize = 12;
ax.XLabel.FontName = 'Arial';
ax.YLabel.String = 'Amplitude';
ax.YLabel.FontSize = 12;
ax.YLabel.FontName = 'Arial';
ax.YTick = -1.5:0.5:1.5;
ax.XTick = -2*pi:pi:2*pi;
ax.XTickLabel = {'-2\pi','-\pi','0','\pi','2\pi'};
ax.XLim = [-2*pi 2*pi];
ax.YLim = [-1.5 1.5];
ax.FontSize = 12;
ax.FontName = 'Arial';
lgd = legend('\it{P}_{\rm{ev}}\rm =100kPa','\it{P}_{\rm{ev}}\rm =200kPa');
lgd.NumColumns = 2;
lgd.Box = 'off';
lgd.FontSize = 12;
lgd.FontName = 'Arial';
%设置画布的大小以及在屏幕中间 位置
set(gcf,'Units','centimeters','Position',[1.4 10 16 10.5])
%设置坐标区图的大小和位置
set(gca,'Units','centimeters','Position',[2 1.2 12 9])
exportgraphics(gcf,'peaks.png','Resolution',300);%输出分辨率为300的PNG图片
exportgraphics(gcf,'peaks.pdf','ContentType','vector');%输出矢量pdf图片
exportgraphics(gcf,'peaks.eps');%输出矢量eps图片
输出的eps图片如下:
可以看到输出的图片自动裁掉了白边,并且十分精准。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删