Как использовать sharex при использовании subplot2grid

Я пользователь Matlab, недавно перешедший на Python. Большинством навыков Python я справляюсь самостоятельно, но с прорисовкой я врезался в стену и мне нужна помощь.

Это то, что я пытаюсь сделать ...

Мне нужно сделать фигуру, которая состоит из 3-х сюжетов со следующими свойствами:

макет подплота составляет 311, 312, 313высота 312 и 313 составляет примерно половину от 311все участки имеют общую ось Xрасстояние между участками равно 0 (они касаются друг друга по оси X)

Кстати, я знаю, как все это сделать, только не в одной фигуре. Это проблема, с которой я сталкиваюсь сейчас.

Например, это мой идеальный макет подзаговора:

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)

s1 = np.sin(2*np.pi*t)
s2 = np.exp(-t)
s3 = s1*s2

fig = plt.figure()
ax1 = plt.subplot2grid((4,3), (0,0), colspan=3, rowspan=2)
ax2 = plt.subplot2grid((4,3), (2,0), colspan=3)
ax3 = plt.subplot2grid((4,3), (3,0), colspan=3)

ax1.plot(t,s1)
ax2.plot(t[:150],s2[:150])
ax3.plot(t[30:],s3[30:])

plt.tight_layout()

plt.show()

Обратите внимание на то, как ось X на разных участках смещена. Я не знаю, как выровнять ось х на этом рисунке, но если я сделаю что-то вроде этого:

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)

s1 = np.sin(2*np.pi*t)
s2 = np.exp(-t)
s3 = s1*s2

fig2, (ax1, ax2, ax3) = plt.subplots(nrows=3, ncols=1, sharex=True)

ax1.plot(t,s1)
ax2.plot(t[:150],s2[:150])
ax3.plot(t[30:],s3[30:])

plt.tight_layout()

plt.show()

Теперь ось x выровнена между вспомогательными участками, но все вспомогательные участки имеют одинаковый размер (это не то, что я хочу)

Кроме того, я хотел бы, чтобы субплоты касались оси X, как это:

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)

s1 = np.sin(2*np.pi*t)
s2 = np.exp(-t)
s3 = s1*s2

fig1 = plt.figure()
plt.subplots_adjust(hspace=0)

ax1 = plt.subplot(311)
ax2 = plt.subplot(312, sharex=ax1)
ax3 = plt.subplot(313, sharex=ax1)

ax1.plot(t,s1)
ax2.plot(t[:150],s2[:150])
ax3.plot(t[30:],s3[30:])

xticklabels = ax1.get_xticklabels()+ax2.get_xticklabels()
plt.setp(xticklabels, visible=False)

plt.show()

Перефразируя мой вопрос:

Я хотел бы использовать

plt.subplot2grid(..., colspan=3, rowspan=2)
plt.subplots(..., sharex=True)
plt.subplots_adjust(hspace=0)

а также

plt.tight_layout()

вместе в одной фигуре. Как это сделать?

Ответы на вопрос(2)

Ваш ответ на вопрос