如何为子图设置一个合并的标题?

5
我希望把我的子图组合起来命名一个标题,而不是分别给每个图命名。 例如:
for pl=1:4
      subplot(2,2,pl)
      title('Test') 
end

这给了我这个结果:在此输入图片描述

如果我使用这个:

figure
title('Test') 
for pl=1:4
      subplot(2,2,pl)

end

我没有得到任何标题。

我希望我的输出像下面这样:enter image description here


2
请在MATLAB FEX上尝试suplabel提交:http://www.mathworks.com/matlabcentral/fileexchange/7772-suplabel - rayryeng
3个回答

8

有一个小技巧。你可以按照以下方式生成带有多个子图的图形。

h = figure 
for pl=1:4
    subplot(2,2,pl)
end

接下来,您需要将 NextPlot 属性设置为 'add'。请执行以下操作:

h.NextPlot = 'add';
a = axes; 

%// Set the title and get the handle to it
ht = title('Test');

%// Turn the visibility of the axes off
a.Visible = 'off';

%// Turn the visibility of the title on
ht.Visible = 'on';

希望这能帮到你!

2
既然你已经定义了一个对图形的句柄,那么你应该使用它。使用 h.Name = '有限时间'. 如果你再次使用 figure,当然会打开一个新的图形窗口。 - Amal

3
如果您拥有生物信息学工具箱,那么您可以使用suptitle。否则,MathWorks文件交换中心的suplabel是一个很好的选择,它可以做这个操作和更多的操作。

-3
这是我的解决方案版本,在Matlab的命令窗口中打印出来:
clear all
close all
clc
name={'first', 'second', 'third', 'fourth'};
for k = 1:4
    subplot(2,2,k);
    title(name(k));
end

Result

希望这可以帮助到您。最好的祝愿。


2
OP希望在整个图形上方有一个总标题。这将单独标记所有子图。请仔细阅读问题。 - rayryeng
1
实际上,我的决定是错误的,抱歉。 - Sergey Sigaev
这不是问题。下次回答前确保先阅读问题。你可以看到原帖中期望的输出结果,而你提供的并不匹配。 - rayryeng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接