目录
1、matlab坐标轴设置多种字体(复合字体)
2、matlab图片中title生成的标题转移至图像下端
3、指定对应格式和期望dpi的图像进行保存、以及不留白保存
4、设置字体字号(x、y轴,标题。全局字体等)
5、设置刻度值信息,只有左、下有边框等
6、指定x、y轴刻度值
7、利用插值绘制热力图、或无插值热力图
8、自定义RGB颜色绘图
9、绘制多个组图、及相关设置。包括组图x、y轴标签、标题,以及组图色条等
10、自定义色条标签
Matlab的帮助文档、很全面,非常好:图形 - MATLAB & Simulink - MathWorks 中国
clc; %clc的作用就是清屏幕
clear; %clear是删除所有的变量
closeall; %close all是将所有打开的图片关掉。
1、matlab坐标轴设置多种字体(复合字体)
x = 0:0.01:2*pi;
y = sin(x);
plot(x,y);
xlabel(['\fontname{宋体}长度\fontname{Times new roman} (mm)'])
2、matlab图片中title生成的标题转移至图像下端
xlabel({'bbb','ccc'})
3、指定对应格式和期望dpi的图像进行保存、以及不留白保存
方法一:无法去除留白
img =gcf; %获取当前画图的句柄
print(img, '-dpng', '-r600', './img.png') %即可得到对应格式和期望dpi的图像
方法二:可以去除留白
也可以使用 exportgraphics 函数保存内容,此函数从 R2020a 开始提供。此函数围绕您的内容提供相同的精确裁剪,还提供了其他选项。例如,您可以保存图像文件并指定分辨率。
img =gcf; %获取当前画图的句柄
exportgraphics(img,'myplot.png','Resolution',300) %即可得到对应格式和期望dpi的图像
4、设置字体字号(x、y轴,标题。全局字体等)
% 字体和字号
hTitle = title('Visualization of air flow data over North America'); % 设置标题
hXLabel = xlabel('xaxis'); % 设置x轴标签
hYLabel = ylabel('yaxis','FontSize', 11); % 设置y轴标签
set(gca, 'FontSize', 10, 'FontName', 'Arial') % 设置全局字体
set([hXLabel, hYLabel], 'FontSize', 11, 'FontName', 'Arial') % 设置x、y轴标签字体
5、设置刻度值信息,只有左、下有边框等
set(gca, 'Box', 'off', ... % 边框
'LineWidth',1,... % 线宽
'XGrid', 'off', 'YGrid', 'off', ... % 网格
'TickDir', 'out', 'TickLength', [.02 .01], ... % 刻度
'XMinorTick', 'off', 'YMinorTick', 'off', ... % 小刻度
'XColor', [.1 .1 .1], 'YColor', [.1 .1 .1]) % 坐标轴颜色
6、指定x、y轴刻度值
xticks([2,4,6,8,10])
% xticklabels({'2','4','6','8','10'})
yticks([1,2,3,4])
% yticklabels({'1','2','3','4'})
7、利用插值绘制热力图、或无插值热力图
x=[2,4,6,8,10];
y=[1,2,3,4];
[x_grid,y_grid]=meshgrid(x,y);
z= [95,92,94,91,90;
84,98,87,89,95;
86,95,89,91,95;
91,90,92,94,93];
% 进行插值的重要参数shading interp;
pcolor(x_grid,y_grid,z);colormap("parula");shading interp;colorbar;
或者这样绘制插值热力图:
s=pcolor(x_grid,y_grid,z);colormap("parula");colorbar;
s.FaceColor = 'interp'; % 插值
set(s,'linestyle','None'); % 不显示网格
绘制无插值热力图:
s=pcolor(x_grid,y_grid,z);colormap("parula");colorbar;
set(s,'linestyle','-','EdgeColor',[1 1 1]); % 设置网格样式和颜色
8、自定义RGB颜色绘图
color_1=[0 0 128]/255;
color_2=[121 255 125]/255;
color_3=[128 0 0]/255;
num12=100;num23=100;
R_mat=[linspace(color_1(1),color_2(1),num12),linspace(color_2(1),color_3(1),num23)];
G_mat=[linspace(color_1(2),color_2(2),num12),linspace(color_2(2),color_3(2),num23)];
B_mat=[linspace(color_1(3),color_2(3),num12),linspace(color_2(3),color_3(3),num23)];
color_map_RGB=[R_mat',G_mat',B_mat'];
figure(2)
pcolor(x_grid,y_grid,z);colormap(color_map_RGB);colorbar;
9、绘制多个组图、及相关设置。包括组图x、y轴标签、标题,以及组图色条等
- 组图绘制
方法一:即在设置好绘图参数后,绘制下一个图时使用 nexttile 命令。可以压缩间隔。非常推荐。点击链接查看使用方法
从 R2019b 开始,您可以使用 tiledlayout 函数在图窗中创建分块图。该函数具有用于最小化绘图周围空间的选项。
通过调用
tiledlayout
函数,创建一个 2×2 分块图布局。要最小化绘图之间的空间,请将'TileSpacing'
名称-值对组参数设置为'compact'
。要使布局周围的空间最小化,请将'Padding'
名称-值对组参数设置为'compact'
。下一步,调用nexttile
函数创建第一个坐标区,并调用plot
函数在坐标区中绘图。然后再创建三个坐标区和绘图。
t = tiledlayout(2,2,'TileSpacing','Compact','Padding','Compact');
nexttile
plot([0 1])
nexttile
plot([1 0])
nexttile
plot([0 1 0 1])
nexttile
plot([1 0 1 0])
如何自定义组图,例如一图占两列等:
调用
nexttile
函数以创建占据两行三列的坐标区对象。
nexttile([2 3]); % 即修改此代码,占两行三列。此时绘图应该在上一个nexttile之后,后一个图需要占占两行三列的情况
bar([1 2 3 4],scores)
legend('Team 1','Team 2','Team 3','Location','northwest')
% Configure ticks and axis labels
xticks([1 2 3 4])
xlabel('Game')
ylabel('Score')
% Add layout title
title(t,'April Bowling League Data')
直接指定在第几个框画图:
要从特定位置开始放置坐标区对象,请指定图块编号和跨度值。
t = tiledlayout(3,3);
nexttile(7)
更加灵活的使用:
显示一个带有图例的较大绘图。调用
nexttile
函数以将坐标区的左上角放在第五个图块中,并使坐标区占据图块的两行和两列。绘制所有团队的分数。将 x 轴配置为显示四个刻度,并为每个轴添加标签。然后在布局顶部添加一个共享标题。
nexttile(5,[2 2]);
方法二:直接调用 subplot,用法和python一样。但是好像不能压缩间隔。
从 R2019b 开始,您可以使用 tiledlayout 函数在图窗中创建分块图。该函数具有用于最小化绘图周围空间的选项。(如果您使用的是较早的版本,您可以使用 subplot 函数来创建分块图。不过,
subplot
函数没有用于控制绘图周围空间的选项。
figure(1) % define figure
subplot(2,2,1); % subplot(x,y,n)x表示显示的行数,y表示列数,n表示第几幅图片
plot([0 1])
subplot(2,2,2);
plot([1 0])
subplot(2,2,3);
plot([0 1 0 1])
subplot(2,2,4);
plot([1 0 1 0])
- 组图标签
通过使添加共享标题和共用轴标签
t
的title
,xlabel
和ylabel
功能。通过移除移动地块靠得更近X从上图轴刻度标记和设置TileSpacing
的属性t
来'compact'
。
% Add shared title and axis labels
title(t,'My Title');
xlabel(t,'x-values');
ylabel(t,'y-values');
% xticklabels(ax1,{1,5}); %定义ax1图的x轴标签
t.TileSpacing = 'compact';
- 组图色条
%设置组图的色条
cb = colorbar;
cb.Layout.Tile = 'east';
10、自定义色条标签
contourf(peaks)
colorbar('Ticks',[-5,-2,1,4,7],...
'TickLabels',{'Cold','Cool','Neutral','Warm','Hot'})
给色条添加标题
surf(peaks)
c = colorbar;
c.Label.String = 'Elevation (ft in 1000s)';