2017-01-28 13 views
1

Я отобразил массив с matshow, и он отлично работает, но теперь я хочу попробовать imshow. Проблема в том, что качество imshow действительно плохо по сравнению с matshow.Качество анимации лучше с matshow(), чем с imshow(). Как его улучшить?

Как это исправить?

Matshow:

matshow(array) 

FIG 1

Imshow:

plt.imshow(array) 

FIG 2

ответ

7

Выпуск из-за interpolation.

Matplotlib matshow является оболочкой для imshow, в том, что она «устанавливает происхождение„верхний“,„интерполяции“до„ближайшего“и„аспекта“на равных.»

Так что, хотя matshow всегда использует interpolation="nearest", imshow по умолчанию имеет interpolation=None. Обратите внимание, что это отличается от interpolation="none".

  • interpolation=None использует интерполяцию, установленную в переменной image.interpolation из matplotlib rc file (который может быть различным в различных версиях Matplotlib.)
  • interpolation="none" не использует интерполяции, такие же, как "nearest"

Самым безопасным способом эта проблема заключается в том, чтобы конкретно установить метод интерполяции в обоих вызовах

plt.matshow(array, interpolation="none") 
plt.imshow(array, interpolation="none") 
+0

Спасибо за ответ! –