Я использую matplotlib для создания панелей графиков качества публикации, и для меня важен точный интервал между осями, включая их текст. Gridspec и injlayout (h_pad, w_pad) хорошо работают, когда все мои графики имеют одинаковый размер шрифтов и содержат xlabel / ylabel (или нет). Однако, если на одном графике на панели есть метка xlabel, все графики в сеточной спецификации будут разнесены на это расстояние (максимальное расстояние между любыми двумя графиками, необходимое для достижения запрошенного пэда). Я хотел бы, чтобы участки располагались на одинаковом расстоянии друг от друга с учетом их текстов. Я обнаружил, что ограниченное расположение может иногда приводить к желаемому поведению, однако аргументы hspace и график управления wspace расходятся в трудно понимаемых единицах «доли размера подсплота», и я не разобрался, как установить wspace или hspace в производить и точные дюймы прокладки я хочу. (Я хочу, чтобы субплоты имели одинаковое расстояние между сюжетами / текстами, независимо от размеров фигуры или субплота, когда я делаю разные фигуры).
Мое единственное решение состояло в том, чтобы создать отдельные спецификации сетки для графиков с различными шаблонами маркировки (например, с или без xlabels) и разместить их на графиках, используя gs.tightlayout с аргументом rect, учитывая желаемый интервал. это также требует выравнивания спецификаций сетки и т. д.
Есть ли какое-либо известное решение для согласованных дюймов отступов между вспомогательными участками (включая текст)?
import matplotlib as mpl
import matplotlib.pyplot as plt
# equal spacing
fig =plt.figure(figsize=(4,8), constrained_layout=False)
gs = mpl.gridspec.GridSpec(3, 1,
figure =fig,
height_ratios = [1,1,1,], hspace=0, wspace=0)
ax1 = fig.add_subplot(gs[0])
ax2 = fig.add_subplot(gs[1])
ax3 = fig.add_subplot(gs[2])
mpl.gridspec.rcParams['font.size'] = 72
# pad 1/4 an inch
gs.tight_layout(fig, h_pad=0.25, w_pad=0, pad = 0.25)

Неравный интервал
fig =plt.figure(figsize=(4,8), constrained_layout=False)
gs = mpl.gridspec.GridSpec(3, 1,
figure =fig,
height_ratios = [1,1,1,], hspace=0, wspace=0)
ax1 = fig.add_subplot(gs[0])
ax2 = fig.add_subplot(gs[1])
ax3 = fig.add_subplot(gs[2])
ax2.set_xlabel('testing', fontsize = 20)
# setting this param so that I know how big the pad should be in inches (fonsize % units used for h_pad) 72 pt = 1 inch
mpl.gridspec.rcParams['font.size'] = 72
# pad 1/4 an inch
gs.tight_layout(fig, h_pad=0.25, w_pad=0, pad = 0.25)

Желаемый вывод выглядит так
