2011-12-04 8 views
42

Kiedy używam metody imshow() matplotlib do reprezentowania małej, pozbawionej rozmiarów matrycy, kończy się to wygładzaniem pikseli. Czy jest jakiś sposób, aby to wyłączyć? To sprawia, że ​​moja postać wprowadza w błąd w prezentacjach. A 28x28 matrix plotted with imshow()Zapobieganie wygładzaniu dla imshow w matplotlib

Powyższy rysunek jest obrazem 28x28, więc powinienem widzieć duże kwadraty pojedynczych kolorów reprezentujących każdy piksel (tak jak to robił matlab przy użyciu imagesc()). Ale zamiast tego piksele wydają się być rozmyte z sąsiednimi pikselami. Czy istnieje sposób, aby wyłączyć to zachowanie?

Odpowiedz

48

Istnieje opcja interpolacji dla imshow, która określa, w jaki sposób i jeśli interpolacja zostanie zastosowana do renderowania macierzy. Jeśli spróbujesz, możesz uzyskać coś bardziej podobnego do tego, co chcesz. Jako przykład

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

imshow(A)

porównaniu z

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

enter image description here

+0

Dzięki, że wydaje się działać. Czy z ciekawości jest ona nazywana "najbliższą" interpolacją? Dokumentacja na tej stronie: http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.imshow nie opisuje, co robi "najbliższy". –

+4

Szczerze mówiąc, nie wiem. W drzewie rozwoju dostępna jest teraz również opcja 'interpolation =" none "', która robi to samo. [Ten przykład] (http://matplotlib.sourceforge.net/examples/pylab_examples/image_interp.html) dostarcza trochę więcej informacji o tym, co próbuje osiągnąć 'interpolation =" nearest ". – talonmies

+9

to może próbować próbkować od "najbliższego" sąsiada? w pobliżu wyświetlanego piksela – DrSAR

19

można również wypróbować funkcję

matshow 

którego nazwa wskazuje, że robi dokładnie to, o co prosiłeś - reprezentuje macierze. Jest to bardzo przydatne, gdy nie trzeba zbytnio dostosowywać figury.

BTW, jeden z najlepszych środków do matplotlib jest ich Gallery

Powiązane problemy