平常我们都用subplot函数来画多个子图,并且给每个子图添加标题。但是如果想给所有的子图一个总的标题和横纵标题怎么办?我找了一圈没找到,虽然这个不是刚需,但是我还是想解决它,终于功夫不负有心人……

前言

一开始的我,自然也是在网上找答案,在这里,但是没有好的办法。我的想法是这个需求不是很“过分”而且大部分人都有这个需求,MATLAB应该会有内置的函数来解决这个问题,终于我找到了tiledlayoutnexttile函数。

开始画图

示例代码

根据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$