Подтвердить что ты не робот

Как добавить заголовок в подзаголовки в Matplotlib?

У меня есть одна фигура, которая содержит много подзаголовков.

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

4b9b3361

Ответ 1

ax.set_title() должен установить заголовки для отдельных подзаголовков:

import matplotlib.pyplot as plt

if __name__ == "__main__":
    data = [1, 2, 3, 4, 5]

    fig = plt.figure()
    fig.suptitle("Title for whole figure", fontsize=16)
    ax = plt.subplot("211")
    ax.set_title("Title for first plot")
    ax.plot(data)

    ax = plt.subplot("212")
    ax.set_title("Title for second plot")
    ax.plot(data)

    plt.show()

Вы можете проверить, работает ли этот код для вас? Может быть, что-то перезаписывает их позже?

Ответ 2

ax.title.set_text('My Plot Title'), похоже, тоже работает.

fig = plt.figure()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
ax1.title.set_text('First Plot')
ax2.title.set_text('Second Plot')
ax3.title.set_text('Third Plot')
ax4.title.set_text('Fourth Plot')
plt.show()

matplotlib добавить заголовки в подзаголовки

Ответ 3

Сокращенный ответ, предполагающий import matplotlib.pyplot as plt:

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

как в:

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

Тогда нет необходимости в лишних переменных.

Ответ 4

Если вы хотите сделать это короче, вы можете написать:

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

Это делает его менее понятным, но вам не нужно больше строк или переменных