Как "отключить" размытый эффект imshow() в matplotlib?
Я хочу сделать цветовой график вероятностей, однако imshow генерирует размытые значения для точек, которые имеют нулевую вероятность. Как я могу избавиться от этой размытой периферии вокруг реальных точек сетки?
Пример:
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.15012305e-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]()
Ответы
Ответ 1
По умолчанию (который изменен mpl 2.0) imshow
интерполирует данные (как вы хотели бы сделать для изображения). Все, что вам нужно сделать, это сказать, что это не интерполировать:
im = plt.imshow(..., interpolation='none')
'nearest'
также будет работать для вас. См. сглаживание между пикселями imagesc\imshow в matlab, например matplotlib imshow, для примеров всех видов интерполяции.
doc
Ответ 2
Вы также можете использовать:
im = plt.imshow(..., interpolation='nearest')
Это особенно хорошо работает для дискретных переменных.