Подтвердить что ты не робот

Предотвращение сглаживания для imshow в matplotlib

Когда я использую метод matplotlib imshow() для представления маленькой матрицы numpy, он заканчивает выполнение некоторого сглаживания между пикселями. Есть ли способ отключить это? Это делает мою фигуру вводящей в заблуждение в презентациях. A 28x28 matrix plotted with imshow()

На рисунке выше изображено изображение 28x28, поэтому я должен видеть большие квадраты одиночных цветов, представляющих каждый пиксель (поскольку matlab будет отображать его при использовании imagesc()). Но вместо этого пиксели кажутся размытыми соседними пикселями. Есть ли способ отключить это поведение?

4b9b3361

Ответ 1

Существует опция интерполяции для imshow, которая контролирует, как и если интерполяция будет применена к рендерингу матрицы. Если вы попробуете

imshow(array, interpolation="nearest") 

вы можете получить что-то большее, как хотите. В качестве примера

A=10*np.eye(10) + np.random.rand(100).reshape(10,10)
imshow(A)

imshow(A)

по сравнению с

A=10*np.eye(10) + np.random.rand(100).reshape(10,10)
imshow(A, interpolation="nearest")

enter image description here

Ответ 2

вы также можете попробовать функцию

matshow 

какое имя указано, что оно делает именно то, что вы просили, - представляют собой матрицы. Это очень удобно, когда вам не нужно слишком сильно настраивать фигуру.

BTW, одним из лучших ресурсов для matplotlib является их Gallery