Создание сетки из рисунков python

90
8

Im новый для python, я пытаюсь создать цифру 3X4 сетки из 12 цифр, цифры выглядят так:

enter image description here

enter image description here

Я использую этот код, чтобы показать им:

for i in range(0,11):
show(x_train[i].reshape(28,28))

Где показ определяется следующим образом:

def show(mnst):
plt.figure()
plt.imshow(mnst, cmap='gray', interpolation='nearest')
plt.show()

теперь моя попытка сделать то, что я пытаюсь сделать, следующая:

show(x_train[:12].reshape(28*3,28*4));

Я прочитал этот код, взяв 12 первых цифр из x_train, каждый из которых составляет 28X28, и переделал все это в сетку 3X4 из 28X28 фигур на одном рисунке.

Но по какой-то причине я получаю эту странную цифру 12X4: 

enter image description here

Что мне не хватает? 

спросил(а) 2016-12-02T13:54:00+03:00 3 года, 10 месяцев назад
1
Решение
57

Цитирование по функции, которую вы используете, приводит к созданию нового экземпляра figure созданного на каждой итерации. Если вы хотите построить несколько изображений, вам нужно создать одну figure содержащую несколько подзаговоров.

Существует много способов создания подзаголовков в одной фигуре на python. Тот, который я часто использую (и, похоже, вам нужен), является plt.subplots(). Вы можете начать свой рисунок следующим образом:

fig,axes = plt.subplots( 3,4, figsize=[12,9] )

Это возвращает фигуру экземпляра fig, а массив осей (топор - это кадр, в котором вы рисуете изображение) из 3 строк и 4 столбца. Затем вы можете построить (или.imshow) в каждом топе, перейдя по осям.

for i,iax in enumerate( axes.flatten() ):
iax.imshow(x_train[i].reshape(28,28), cmap='gray', interpolation='nearest')
fig.show()

Обратите внимание, что я сплющил массив, содержащий оси. Это не изменяет компоновку подзаголовков, потому что это не влияет на экземпляры ax, созданные с помощью plt.subplots().

ответил(а) 2016-12-02T14:22:00+03:00 3 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема