Matplotlib imshow: как нанести маску на матрицу
Я пытаюсь анализировать графически 2d-данные. matplotlib.imshow
очень полезно в этом, но я чувствую, что я мог бы еще больше использовать это, если бы я мог исключить некоторые ячейки из моей матрицы, значения вне диапазона интереса. Моя проблема заключается в том, что эти значения "сглаживают" цветовую карту в интересующем меня диапазоне. Я мог бы иметь большее цветовое разрешение после исключения этих значений.
Я знаю, как применить маску к моей матрице, чтобы исключить эти значения, но она возвращает объект 1d после применения маска:
mask = (myMatrix > lowerBound) & (myMatrix < upperBound)
myMatrix = myMatrix[mask] #returns a 1d array :(
Есть ли способ передать маску imshow
Как восстановить двумерный массив?
1 ответ:
Вы можете использовать
numpy.ma.mask_where
для сохранения формы массива, напримерimport numpy as np import matplotlib.pyplot as plt lowerBound = 0.25 upperBound = 0.75 myMatrix = np.random.rand(100,100) myMatrix =np.ma.masked_where((lowerBound < myMatrix) & (myMatrix < upperBound), myMatrix) fig,axs=plt.subplots(2,1) #Plot without mask axs[0].imshow(myMatrix.data) #Default is to apply mask axs[1].imshow(myMatrix) plt.show()