Matplotlib imshow:如何在矩阵上应用掩码

2024-06-25 06:11:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图以图形化的方式分析二维数据。matplotlib.imshow在这方面非常有用,但我觉得如果我可以从矩阵中排除一些单元格,这些值超出了感兴趣的范围,我就可以更充分地利用它。我的问题是这些值在我感兴趣的范围内“展平”了颜色映射。排除这些值后,我可以获得更高的颜色分辨率。

我知道如何在矩阵上应用遮罩来排除这些值,但在应用遮罩后,它会返回1d对象:

mask = (myMatrix > lowerBound) & (myMatrix < upperBound)
myMatrix = myMatrix[mask] #returns a 1d array :(

有没有办法将掩码传递给imshow如何重建二维数组?


Tags: 数据对象利用matplotlib颜色方式分辨率矩阵
1条回答
网友
1楼 · 发布于 2024-06-25 06:11:10

可以使用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()

相关问题 更多 >