#matplotlib
#matplotlib
Вопрос:
Я использую matplotlib и grispec для построения 4 осей, три из которых я хочу плотно прилегать друг к другу, а последнюю я хочу немного отстоять от трех вышеупомянутых. Причина в том, что я хочу, чтобы в трех верхних были одни и те же единицы измерения по оси x, а в нижней — разные единицы измерения по оси x. Я пытался использовать gs.update
сразу после третьей оси, но это разнесло все оси друг от друга, вместо нижней четвертой оси из трех верхних.
Есть ли простая команда gridspec / matplotlib, которую мне не хватает, или мне нужно как-то обойти это?
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(13,12))
gs1=fig.add_gridspec(nrows=4, ncols=2, hspace=0.0)
ax2=fig.add_subplot(gs1[1,:])
ax1=fig.add_subplot(gs1[0,:], sharey=ax2)
ax3=fig.add_subplot(gs1[2,:], sharey=ax2)
ax4=fig.add_subplot(gs1[3,:]) #<- want this spaced farther down than the above three axes
plt.show()
Комментарии:
1. Обходной путь с ограниченным макетом состоял бы в том, чтобы поместить исполнителя на оси, которые создают пространство для вас. Это может быть заголовок. Или это может быть патч того же цвета, что и фон.
Ответ №1:
Это одно из решений — здесь я впервые добавил gridspec для первых трех графиков. Указанное мной значение должно заканчиваться на 0,35 снизу (0 — самый низ, 1 — верх). Затем я добавил еще одну gridspec, которая начинается с 0.3 и поэтому имеет разрыв 0.05. Очевидно, что вы можете поиграть с числами / размещением.
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(13,12))
gs1=fig.add_gridspec(nrows=3, ncols=1, hspace=0, bottom=0.35)
ax1=fig.add_subplot(gs1[0,0])
ax2=fig.add_subplot(gs1[1,0], sharey=ax1)
ax3=fig.add_subplot(gs1[2,0], sharey=ax1)
gs2=fig.add_gridspec(nrows=1, ncols=1, top=0.3)
ax4=fig.add_subplot(gs2[0,0])
for ax in fig.axes:
ax.set_yticks([])
ax.set_xticks([])
plt.show()
Результат: