Я работаю над проектом, в котором мне нужно собрать сетку из 10 строк и 3 столбца. Хотя я смог сделать сюжеты и упорядочить подзаголовки, я не смог создать хороший сюжет без пробела, такой как этот ниже от gridspec documentatation. .Как удалить пространство между подзаголовками в matplotlib.pyplot?
Я пробовал следующие сообщения, но все еще не смог полностью удалить пустое пространство, как в примере изображения. Может кто-нибудь, пожалуйста, дайте мне несколько советов? Благодаря!
Ниже мой код. The full script is here on GitHub. Примечание: images_2 и images_fool - это как numpy массивы сплюснутых изображений с формой (1032, 10), а delta - массив изображений формы (28, 28).
def plot_im(array=None, ind=0):
"""A function to plot the image given a images matrix, type of the matrix: \
either original or fool, and the order of images in the matrix"""
img_reshaped = array[ind, :].reshape((28, 28))
imgplot = plt.imshow(img_reshaped)
# Output as a grid of 10 rows and 3 cols with first column being original, second being
# delta and third column being adversaril
nrow = 10
ncol = 3
n = 0
from matplotlib import gridspec
fig = plt.figure(figsize=(30, 30))
gs = gridspec.GridSpec(nrow, ncol, width_ratios=[1, 1, 1])
for row in range(nrow):
for col in range(ncol):
plt.subplot(gs[n])
if col == 0:
#plt.subplot(nrow, ncol, n)
plot_im(array=images_2, ind=row)
elif col == 1:
#plt.subplot(nrow, ncol, n)
plt.imshow(w_delta)
else:
#plt.subplot(nrow, ncol, n)
plot_im(array=images_fool, ind=row)
n += 1
plt.tight_layout()
#plt.show()
plt.savefig('grid_figure.pdf')
Работает как волшебство, спасибо @ImportanceOfBeingErnest! Просто интересно, почему вы используете figsize = (4, 10) вместо figsize = (10, 10) ... последний возвращает пространство сразу. –
Зачем вам нужен квадратный размер фигуры, если у вас в 3 раза больше строк, чем столбцов? Вы можете, конечно, установить его на (10,10), а затем снова изменить параметры «left» и «right». Мой выбор 'figsize = (4, 10)' больше продиктован идеей о том, что наличие столбцов 'n' и' m', может иметь значение figsize (m + 1, n); остальное затем выполняется путем настройки параметров подзадачи. – ImportanceOfBeingErnest
Я вижу. Так что «figsize» действительно относится к общему размеру изображения, а не к подзаголовкам. Я смутился. –