Python отображать две фигуры, содержащие несколько подзаговоров рядом - PullRequest
0 голосов
/ 04 февраля 2020

Как указано в заголовке, можно использовать две цифры в одной при использовании matplotlib.pyplot?

С помощью этого кода я генерирую изображения, подобные этим:

def plot_output_image(label, clothes):
plt.clf()
fig = plt.figure(figsize=(5, 2))
columns = 5
rows = 2

for i in range(1, columns * rows + 1):
    filename = similar_images['class'].iloc[i - 1] + '/' + str(similar_images['id'].iloc[i - 1]) + '.jpg'
    img = load_img((files.small_images_classes_directory / filename).absolute().as_posix())
    img = img_to_array(img) / 255
    fig.add_subplot(rows, columns, i)
    plt.axis('off')
    plt.imshow(img)

plt.savefig((files.ROOT / 'similarity-output' / label / ('out_' + clothes)).absolute().as_posix())
plt.close()

similar trousers

Как я могу разместить вторую фигуру рядом таким образом, чтобы результат стал примерно таким? similar trousers + template

1 Ответ

2 голосов
/ 04 февраля 2020

Для сложной компоновки вы можете использовать GridSpec или subplot2grid() для генерации вспомогательных участков, которые могут занимать несколько строк / столбцов. См. этот учебник для получения дополнительной информации.

Например, используя gridspe c, вы можете сделать:

from matplotlib import gridspec
gs00 = gridspec.GridSpec(1,2, width_ratios=[1,2])
gs01 = gridspec.GridSpecFromSubplotSpec(2,5, subplot_spec=gs00[0,1])
fig = plt.figure(figsize=(8,3))
left_ax = fig.add_subplot(gs00[0,0])
small_axs = [fig.add_subplot(gs01[i,j]) for i in range(2) for j in range(5)]

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...