我有一个包含许多子图的图。

fig = plt.figure(num=None, figsize=(26, 12), dpi=80, facecolor='w', edgecolor='k')
fig.canvas.set_window_title('Window Title')

# Returns the Axes instance
ax = fig.add_subplot(311) 
ax2 = fig.add_subplot(312) 
ax3 = fig.add_subplot(313) 

如何给子情节添加标题?

Fig.suptitle为所有图形添加一个标题,尽管ax.set_title()存在,但后者并不为我的子图添加任何标题。

谢谢你的帮助。

编辑: 更正了关于set_title()的拼写错误。谢谢Rutger Kassies


当前回答

从matplotlib 3.4.3开始,图。Add_subplot函数支持标题为:

fig.add_subplot(311, title="first")
fig.add_subplot(312, title="second")

其他回答

你只能通过迭代给每个图形一个不同的标题和标签。

titles = {221: 'First Plot', 222: 'Second Plot', 223: 'Third Plot', 224: 'Fourth Plot'}
fig = plt.figure()
for x in range(221,225):
  ax = fig.add_subplot(x)
  ax.title.set_text(titles.get(x))

plt.subplots_adjust(left=0.1,
                    bottom=0.1, 
                    right=0.9, 
                    top=0.9, 
                    wspace=0.4, 
                    hspace=0.4)
plt.show()

输出:

如果你想让它更短,你可以这样写:

import matplotlib.pyplot as plt
for i in range(4):
    plt.subplot(2,2,i+1).set_title(f'Subplot n°{i+1}')
plt.show()

它可能不太清楚,但你不需要更多的行或变量

为了完整起见,所要求的结果也可以在不显式引用图轴的情况下实现,如下所示:

import matplotlib.pyplot as plt

plt.subplot(221)
plt.title("Title 1")

plt.subplot(222)
plt.title("Title 2")

plt.subplot(223)
plt.title("Title 3")

plt.subplot(224)
plt.title("Title 4")

如果有重叠标签的问题,请在最后一个绘图之后使用plt.tight_layout()。

从matplotlib 3.4.3开始,图。Add_subplot函数支持标题为:

fig.add_subplot(311, title="first")
fig.add_subplot(312, title="second")

一个简单的答案假设 进口matplotlib。Pyplot为plt:

plt.gca().set_title('title')

如:

plt.subplot(221)
plt.gca().set_title('title')
plt.subplot(222)
etc...

这样就不需要多余的变量了。