一组子图的标题

Posted

技术标签:

【中文标题】一组子图的标题【英文标题】:Title over group of subplots 【发布时间】:2016-02-09 04:53:44 【问题描述】:

有很多子图,每个子图都有自己的标题。如何在所有这些子图组上添加标题? 我希望这个标题显示在顶部中心。

x = linspace(-5,5);

y1 = sin(x);
subplot(2,5,[1:2])
plot(x,y1)
title('y=sin(x)')

y2 = cos(x);
subplot(2,5,[3:4])
plot(x,y2)
title('y=cos(x)')

y3 = tan(x);
subplot(2,5,[5,10])
plot(x,y3)
title('y=tan(x)')

y4 = sin(2*x);
subplot(2,5,[6:7])
plot(x,y1)
title('y=sin(2x)')

y5 = cos(2*x);
subplot(2,5,[8:9])
plot(x,y2)
title('y=acos(2x)')

【问题讨论】:

你需要命令suptitle @Adiel 等人:请注意,suptitle 在用于演示的生物信息学工具箱中。对于没有这个工具箱的人,有several option on the MathWorks File Exchange。 为什么Matlab不把它做成内置函数?对于任何用户来说,它都是最有用的功能。 【参考方案1】:

自 Matlab 2018b 起,新功能 sgtitle 为子图组添加标题,只需添加 sgtitle('Subplot Title');。它不需要工具箱。

例如:

subplot(1,2,1)
plot(cos(0:40));
title('cos');

subplot(1,2,2)
plot(sin(0:40))
title('sin');

sgtitle('Trigo');

【讨论】:

【参考方案2】:

我为没有生物信息学工具箱的人找到的最简单的方法是:

a = axes;
t = title('My title');
a.Visible = 'off';
t.Visible = 'on';

您正在做的是创建一组新的轴,默认情况下覆盖整个图形,并在这些轴上创建一个标题。然后将轴设为不可见,并为再次可见的标题覆盖此设置。

如果生成的标题与物体发生碰撞,请使用a.Position 来移动坐标轴。

是的,这不是基本功能的一部分,这很荒谬,但是工具箱中隐藏了很多一两行功能,人们可能会这么说;-)(看着你,range。 )

【讨论】:

【参考方案3】:
x = linspace(-5,5);

y1 = sin(x);
subplot(2,5,[1:2])
plot(x,y1)
title('y=sin(x)')

y2 = cos(x);
subplot(2,5,[3:4])
plot(x,y2)
title('y=cos(x)')

y3 = tan(x);
subplot(2,5,[5,10])
plot(x,y3)
title('y=tan(x)')

y4 = sin(2*x);
subplot(2,5,[6:7])
plot(x,y1)
title('y=sin(2x)')

y5 = cos(2*x);
subplot(2,5,[8:9])
plot(x,y2)
title('y=acos(2x)')

suptitle('my title');

【讨论】:

如果您没有suptitle() 的工具箱怎么办?有什么解决办法吗? 我不知道。也许你可以问另一个问题,希望能得到一些答案。 请不要将纯代码答案转储到 Stack Overflow。你写答案不仅仅是为了回答问题,也是为了让未来的读者理解。我在发布 3 年后现在读到了这篇文章,但不知道我应该看什么。请在代码周围的文本中或在代码中的 cmets 中解释您的代码。

以上是关于一组子图的标题的主要内容,如果未能解决你的问题,请参考以下文章

在 matplotlib 中设置子图的大小

matplotlib 子图的行标题

分组条形图的子图分组图例

给定单个参数的子图的行为是啥? [复制]

在带有子图的 geopandas 图中添加图例会改变图的大小

更改 matplotlib 子图的大小