Matlab最实用画图命令整理
全部手码,自己整理,走过路过点个赞收藏一下吧!
最近在写论文,SCI需要300dpi以上的高清图(见第6部分用Print输出高清图),用matlab导出图的时候,碰到一些问题,就整理了一下,希望能帮助到大家。代码整理如下:
1、关于 gcf 和 gca
gcf = Current figure handle 当前图形的句柄
fig = gcf; % returns the current figure handle.
gca = Get handle to current axis. 获取当前图形坐标轴的句柄
H = gca; % returns the handle to the current axis in the current figure.
% The current axis is the axis that graphics commands like PLOT, TITLE, SURF, etc. draw to if issued.
% Use the commands AXES or SUBPLOT to change the current axis to a different axis, or to create new ones.
2、画多个子图(subplot),以4个子图为例
在写论文的过程中,会涉及到多个图的情况,大致整理如下:
figure,
subplot(2,2,1),plot(x,y1,y2,'linewidth',2);
% subplot('position', [0.11 0.63 0.35 0.3]); % [x0 y0 width height] 可以设置位置,一般默认即可
% 左下角为原点,横向为x,竖向为y
% figure在画布中的位置由 ‘Position’, [x0 y0 Width Height] 设置
title('a'); %设置图标题
xlabel('{Time(s)}'),ylabel('{Slant range(km)}'); %X轴和Y轴名称,单位
legend('one','two'); %几个y对应legend括号里面几个元素,单个曲线不需要legend
axis([0 2 60 400]); %设置横纵坐标的范围,可不设置,默认
xticks(0:0.2:2); %这样x轴会每隔0.2显示一个刻度,可不设置,默认
yticks(60:20:400); %这样y轴会每隔20显示一个刻度,可不设置,默认
set(gca,'FontSize',20); %设置字体大小,20在PPT中比较合适,放在论文中一般8号就好了
subplot(2,2,2),plot(x2,y2); %后面的子图和前面一样
title('b');%设置图标题
% ...
subplot(2,2,3),plot(x3,y3);
title('c');%设置图标题
% ...
subplot(2,2,4),plot(x4,y4);
title('d');%设置图标题
% ...
3、关于figure的一些设置命令整理
设置曲线线宽、标记点大小,标记点边框颜色和标记点填充颜色等。
plot(…,’Property Name’, Property Value, …)
Property Name | Property Value |
---|---|
LineWidth | 线宽 数值,如0.5,1等,单位为points |
MarkerEdgeColor | 标记点边框线条颜色 颜色字符,如’g’, ’b’等 |
MarkerFaceColor | 标记点内部区域填充颜色 颜色字符 |
MarkerSize | 标记点大小 数值,单位为points |
关于matlab中标尺,线宽,Marker,坐标轴,legend,字体等的一些设置:
set(findall(gcf,'type','hggroup'),'FontSize',16); %%设置数据游标(标尺)的字体大小
set(findall(gcf,'type','line'),'linewidth',2);%%设置全部线宽为2,默认为0.5
set(findall(gcf,'type','line'),'markersize',10);%%设置marker的大小为10,默认为6
set(gca,'FontName','Times New Roman','FontSize',8,'LineWidth',1.0);%设置坐标轴的字体,字体大小,线宽
set(gca,'FontSize',20); %设置坐标轴字体大小为20
set(legend,'FontSize',8); %设置legend的字体大小
set(gca,'xtick',[0:1000:5000]); %自定义x轴刻度间隔
set(gca,'ytick',[0.97:0.005:1]); %自定义y轴刻度间隔
4、关于坐标轴显示的设置
设置坐标轴上下限:axis([xmin,xmax,ymin,ymax]); 分别是x,y轴的上下限;
分坐标轴设置:
xlim([xmin,xmax]); %对X轴设定显示范围
ylim([ymin,ymax]); %对Y轴设定显示范围
zlim([zmin,zmax]); %对Z轴设定显示范围
设定坐标轴范围和坐标轴显示内容:
set(gca,'xlim',[0,2],'xtick',[0:0.2:2]); %x坐标轴范围,同时自定义x轴刻度间隔
set(gca,'ylim',[60,400],'ytick',[60:20:400]); %y坐标轴范围,同时自定义y轴刻度间隔
如果需要另外定义这些刻度的名字,可以搭配xticklabels:
xticklabels({'a0','b10',c'30',...});
为说明效果,省略了部分内容,写代码时应该与xticks对应写够10+1个label。
5、imagesc函数画图
imagesc函数画图会出现y轴倒置的情况,即下大上小,set(gca,‘ydir’,‘normal’) 可以恢复正常。
[x1,y1] = size(z); %z为二维矩阵
x = (x1-1)./60; %坐标转换,转换到自己需要的坐标
y = (y1-1)*7.5+60; %坐标转换,转换到自己需要的坐标
imagesc(x,y,z.'); %根据实际情况是否加转置
set(gca,'ydir','normal'); %画出来y轴是从大到小的,需要用这条指令恢复正常
colorbar;colormap jet; % colorbar颜色设置,从蓝到红
shading faceted; % 不要平滑,根据实际画图需要
% shading interp; %插值平滑
caxis([25,38]); % colorbar标尺范围
关于shading:
shading 是用来处理色彩效果的,分以下三种:
no shading 一般的默认模袭式 即shading faceted
shading flat 在faceted的基百础上去掉图上的网格线
shading interp 在flat的基础上进行色彩的插值处理,使色度彩平滑过渡
6、Print输出高清图
SCI的论文.jpg或者.tif需要300dpi以上的图像,怎么保存都不清楚,折腾我半天,问题包括莫名其妙变96dpi,300dpi图片宽度是6000像素,导致放word后压缩厉害。 直接用导出功能,300dpi或者600dpi无法设置图片大小,设置了也会被改(matlab 2016b,不知道是不是我matlab的问题)。现在整理如下:
print(figure_handle,fileformat,filename); % 其中的三个参数:
a、figure_handle: 图形句柄,如果图形窗口标题栏是“figure 3”,则句柄就是3;常用gcf获取当前窗口句柄
b、fileformat:单引号字符串,指定存储格式:
png格式: ‘-dpng’
jpeg格式: ‘-djpeg’,
tiff格式: ‘-dtiff’ (SCI论文推荐用这个)
bmp格式: ‘-dbitmap’
gif格式:’-dgif’
emf无损格式:’-dmeta’
c、 filename:文件名,可带路径,不设置就存当前文件夹。
print保存高清图可以用如下4条指令之一即可实现。
路径记得需要改为自己的路径,即 'C:\Users\AgileDARN\Desktop\SuperDARN2019’需要改为自己的路径。
print(figure(3),'-dtiff', '-r300',strcat( 'C:\Users\AgileDARN\Desktop\SuperDARN2019\','Image.tif' ));
%保存到指定路径
print(gcf,'-dtiff','-r300','C:\Users\AgileDARN\Desktop\SuperDARN2019\Image');
%保存到指定路径
print -f3 -dtiff -r300 Image
% -f3对应的figure(3),-f1对应figure(1)
%保存到当前路径
print(gcf,'-dtiff','-r300','Image');
%保存到当前路径
导出SCI论文图,我用以下两条命令,首先设置图像大小手动,不然300dpi的图宽度会默认设置为6000像素,600dpi的是12000像素,图很大,放word还是会压缩,导致看不清,所以选择用set来设置手动。 word里面A4的大小是21cm,去除两边的变宽,一般宽度设置14cm,比如这个例子14cm*8.6cm,图的大小根据自己的实际情况设置。导出图的字体大小为8即可,如果看不清,是设置的不对!!!
set(gcf,'PaperUnits','centimeters','PaperPosition',[14 19 14 8.6],'PaperPositionMode', 'manual');
print(gcf,'-dtiff','-r300','C:\Users\AgileDARN\Desktop\SuperDARN2019\meteors2z');
如果图的字体不是8,用以下代码改一下。(是不是很贴心!)
set(gca,'FontSize',8); %设置坐标轴字体大小为8
set(legend,'FontSize',8); %设置legend的字体大小为8
以下两张图是同一张图,看看以下对比:
a、fig里面的截图:
b、tif图由于无法上传,也是截图。由于上面set改变了图的大小所以同样的字体看起来不一样。
参考的文章有:
1、matlab的图像操作——输出图像尺寸大小、坐标轴等各项设置
https://blog.csdn.net/misayaaaaa/article/details/53421221/
2、Matlab的图像操作——colorbar的各项细节操作
https://blog.csdn.net/misayaaaaa/article/details/53326395
3、Matlab多个子图Subplot位置排布
https://blog.csdn.net/qq_41492768/article/details/90209781
5、浅析image,imagesc,imshow的用法
https://blog.csdn.net/zhupananhui/article/details/16340345
6、Matlab作图语句小结
https://blog.csdn.net/qysh123/article/details/8783546
如有侵权,请联系我删除,敬请谅解!
如代码有问题,请评论!