Я не думаю, что число вроде 100 вообще имеет какой-либо смысл.Это будет означать, что пространство должно быть в 100 раз больше, чем подзаговор.
Фигура 7 дюймов в ширину.Принимая во внимание левую границу в 12,5% и правую границу в 10%, у вас осталось 5,425 дюйма, чтобы разойтись по участкам.Давайте назовем этот размер s
.
Имея n
субплоты (или ячейки сетки), уравнение, которое определяет пространство и размер ячейки, равно
s = n*axw + (n-1)*axw*wspace
с axw
, являющимсяразмер ячейки в дюймах.Мы можем использовать эту формулу для визуализации для данного размера фигуры и набора чисел ячеек (n
), размера осей и расстояния в дюймах в зависимости от wspace
.

Мы видим, что существует максимальный размер для осей и расстояния.Чем больше количество ячеек, тем ниже максимально возможный размер.Кроме того, чем больше оси, тем меньше расстояние и наоборот.Это хорошо объясняет, почему нет разницы между wspace = 10 и 100.
Я отметил размер 0,6 дюйма на графике.Предположим, это минимальное расстояние, которое вам нужно в дюймах, чтобы надписи не перекрывались.Из графика мы можем прочитать, что это возможно только при n
, равном 9 или меньше.Сетка из 18 ячеек, следовательно, никогда не позволит использовать неперекрывающиеся метки для данного размера фигуры.
Начните с использования большей цифры, вы, конечно, можете уменьшить количество ячеек.
Поскольку любое число, использованное в примере из вопроса, кратно 3, сетка может быть уменьшенав меньшую сетку с такими же свойствами.В этом случае пространство установлено правильно.Например, для wspace=1.5
(то есть на 50% больше, чем размер ячейки)
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=([7,4]))
gs = gridspec.GridSpec(2,6)
gs.update(wspace=1.5, hspace=0.3)
ax1 = plt.subplot(gs[0,:2])
ax1.set_ylabel('ylabel', labelpad=0, fontsize=12)
ax2 = plt.subplot(gs[0,2:4])
ax2.set_ylabel('ylabel', labelpad=0, fontsize=12)
ax3 = plt.subplot(gs[0,4:6])
ax3.set_ylabel('ylabel', labelpad=0, fontsize=12)
ax4 = plt.subplot(gs[1,1:3])
ax4.set_ylabel('ylabel', labelpad=0, fontsize=12)
ax5 = plt.subplot(gs[1,3:5])
ax5.set_ylabel('ylabel', labelpad=0, fontsize=12)
plt.show()
