2013-11-15 23 views
41

Ben olasılıkların bir renk çizimi yapmak istiyorum ancak imshow sıfır olasılık olan noktalar için bulanık değerler üretir. Bu bulanık çevreden nasıl gerçek ızgara noktalarından kurtulabilirim?Matplotlib'de imshow() 'un bulanık efektini nasıl kapatabilirim?

Örnek: (Bir resmin yapmak isteyeyim gibi) (mpl 2.0 değiştirilir) Varsayılan olarak

import numpy as np 
import matplotlib.pyplot as plt 

a=np.asarray([[ 0.00000000e+00 , 1.05824446e-01 , 2.05086136e-04, 0.00000000e+00], 
[ 1.05824446e-01 , 3.15e-01 , 1.31255127e-01 , 1.05209188e-01], 
[ 2.05086136e-04 , 1.31255127e-01 , 0.00000000e+00 , 0.00000000e+00], 
[ 0.00000000e+00 ,1.05209188e-01 , 0.00000000e+00 , 0.00000000e+00]]) 
im=plt.imshow(a,extent=[0,4,0,4],origin='lower',alpha=1,aspect='auto') 
plt.show() 

enter image description here

cevap

56

, imshow verileri enterpolasyonlar.

im = plt.imshow(..., interpolation='none') 

'nearest' da istediğini için çalışacaktır: Yapmanız gereken tek şey arasına sokmak değil bunu söylemek. Tüm interpolasyon türlerinin örnekleri için bkz. smoothing between pixels of imagesc\imshow in matlab like the matplotlib imshow.

doc

+1

Teşekkür ederiz. Doğru özellik enterpolasyon. 'im = plt.imshow (..., enterpolasyon = 'none')' – Cupitor

+1

@Naji Yup bunun için üzgünüm. Bunu günde birkaç kez yazıyorum .... – tacaswell

+3

Bazı arka uçların 'none'ı desteklemediğini, 'en yakın' her yerde kabul edildiğini unutmayın. – tiago

3

Ayrıca kullanabilirsiniz: Bu ayrık değişkenler için özellikle iyi çalışır

im = plt.imshow(..., interpolation='nearest') 

.

İlgili konular