ti-enxame.com

Impedir anti-aliasing para imshow no matplotlib

Quando uso o método imshow () do matplotlib para representar uma matriz numpy pequena, ele acaba suavizando os pixels. Existe alguma maneira de desativar isso? Isso torna minha figura enganosa em apresentações.A 28x28 matrix plotted with imshow()

A figura acima é uma imagem de 28x28, então eu deveria estar vendo quadrados grandes de cores únicas representando cada pixel (como o matlab o mostraria ao usar imagesc ()). Mas, em vez disso, os pixels parecem estar borrados com os pixels vizinhos. Existe uma maneira de desativar esse comportamento?

42
Christopher Dorian

Existe uma opção de interpolação para imshow que controla como e se a interpolação será aplicada à renderização da matriz. Se você tentar

imshow(array, interpolation="nearest") 

você pode obter algo mais como você deseja. Como um exemplo

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

imshow(A)

comparado com

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

enter image description here

48
talonmies

você também pode tentar a função

matshow 

cujo nome indica que faz exatamente o que você pediu - representa matrizes. É bastante útil quando você não precisa personalizar muito a figura.

BTW, um dos melhores recursos para o matplotlib é o Galeria

19
eldad-a