Evitar el anti-aliasing para imshow en matplotlib


Cuando uso el método imshow() de matplotlib para representar una pequeña matriz numpy, termina haciendo un poco de suavizado entre píxeles. ¿Hay alguna manera de desactivar esto? Hace que mi figura sea engañosa en las presentaciones.Una matriz de 28x28 trazada con imshow()

La figura de arriba es una imagen de 28x28, por lo que debería estar viendo grandes cuadrados de colores simples que representan cada píxel (como matlab lo mostraría cuando usa imagesc()). Pero en cambio, los píxeles parecen estar borrosos con los píxeles vecinos. ¿Hay alguna manera de desactivar esto comportamiento?

Author: Christopher Dorian, 2011-12-04

2 answers

Hay una opción de interpolación para imshow que controla cómo y si la interpolación se aplicará a la representación de la matriz. Si intenta

imshow(array, interpolation="nearest") 

Usted podría conseguir algo más como usted quiere. Como ejemplo

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

imshow (A)

Comparado con

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

introduzca la descripción de la imagen aquí

 48
Author: talonmies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-04 17:47:34

También puede probar la función

matshow 

Cuyo nombre indica que hace exactamente lo que usted pidió - representar matrices. Es muy útil cuando no es necesario personalizar la figura demasiado.

Por cierto, uno de los mejores recursos para matplotlib es su Galería

 19
Author: eldad-a,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-06 14:01:23