Python: заголовок над двумя осями, но не над рисунком

Я ищу что-то похожее на plt.subtitle(), в котором «основной заголовок» помещается над двумя выбранными мной второстепенными сюжетами, которые находятся в сетке. На моем графике заголовки Development of model parameter и Final model parameter должны быть чем-то вроде основного заголовка для двух осей. Есть ли функция для этого? Или простой обходной путь?введите здесь описание изображения


person Svenno Nito    schedule 15.04.2018    source источник


Ответы (1)


Один из способов — создать невидимую ось для общих диаграмм и использовать только заголовок этой оси:

import numpy as np
import matplotlib.pyplot as plt

#function for display
def f(t, a, b, c):
    return np.exp(a - t) * np.sin(b * t + c)

fig = plt.figure()

x = np.linspace(0, 10, 1000)
#curve 1
ax1 = fig.add_subplot(211)
ax1.plot(x, f(x, 5, 1, 0))
ax1.set_title("Curve 1")
#create common axis for curve 2 and 3, remove frame and ticks, set title 
ax23 = fig.add_subplot(223, frameon = False)
ax23.set_xticks([])
ax23.set_yticks([])
ax23.set_title("Curve 2 and 3 together")
#create curve 2
ax2 = fig.add_subplot(245)
ax2.plot(x, f(x, 0, 3, 0))
#create curve 3
ax3 = fig.add_subplot(246)
ax3.plot(x, f(x, 2, 1, 7))
#create curve 4
ax4 = fig.add_subplot(224)
ax4.plot(x, f(x, -1, 3, -3))
ax4.set_title("Curve 4")
#display
plt.show()

Выход

введите здесь описание изображения

person Mr. T    schedule 16.04.2018
comment
Идеально! frameon = False был именно тем, что я искал. - person Svenno Nito; 16.04.2018