平常我们都用
subplot
函数来画多个子图,并且给每个子图添加标题。但是如果想给所有的子图一个总的标题和横纵标题怎么办?我找了一圈没找到,虽然这个不是刚需,但是我还是想解决它,终于功夫不负有心人……
前言
一开始的我,自然也是在网上找答案,在这里,但是没有好的办法。我的想法是这个需求不是很“过分”而且大部分人都有这个需求,MATLAB应该会有内置的函数来解决这个问题,终于我找到了tiledlayout
和nexttile
函数。
开始画图
示例代码
根据MATLAB的相关函数的文档示例,我简要的做了个demo,并尽可能的提供更多的可自定义修改选项,代码如下:
figure;
t = tiledlayout('flow');
%% Plot
for i=1:9
nexttile
histogram(WMolrHeight.(i)(~isnan(WMolrHeight.(i))));
title(['His\_',num2str(i)]);
end
%% Title,xlabel,ylabel
a=title(t,'This is your Overall Title');
b=ylabel(t,'This is your Ylabel');
c=xlabel(t,'This is your Xlabel');
%% Options Seting
a.FontSize = 16; a.FontWeight='bold'; % othes: color\Interpreter ...
b.FontSize = 14; b.FontWeight='bold';
c.FontSize = 14; c.FontWeight='bold';
简单解释下,首先创建Figure,tiledlayout(‘flow’) 指定布局的 ‘flow’ 图块排列。最初,只有一个空图块填充整个布局。当您调用 nexttile 时,布局都会根据需要进行调整以适应新坐标区,同时保持所有图块的纵横比约为 4:3。
后续的title、xlabel、ylabel都是针对t
对象的,因为你是对整个图进行”标题和横纵标题”。
同时你也可以对这些标题进行一些设置,比如字体大小、字重以及颜色等等。
示例结果
上述代码的结果:
$\cdots$ end $\cdots$