对角切片数组并屏蔽数据

Slice array diagonally and mask out data

我的目标是创建一个对角线遮罩效果...我使用 ma.masked_where 将它的一部分放下,但是对于最后一个 contourf (data5),我只想遮住其中的区域下面的第三个图是红线和 x 所在的位置。我该怎么做?

我试过了:

import numpy as np
import matplotlib.pyplot as plt
from numpy import ma

data = np.random.rand(5,45,60)
data1 = data[2,0:30,0:30]
x2, y2 = np.meshgrid(np.arange(0, 30, 1), np.arange(0, 30, 1))
data1 = ma.masked_where(x2 + y2 > 30, data1)

data2 = ma.masked_where(x2 + y2 < 10 , data1) #+
data3 = ma.masked_where(x2 + y2 > 25 , data2) #+
data4 = ma.masked_where(x2 - y2 > 10 , data3)

# my attempt to mask out the top region, above the red line... but then it returns a completely empty plot... 
data5 = ma.masked_where(x2 + y2 > -5 , data4)

plt.contourf(data2)
plt.xlim(0,60)
plt.ylim(0,45)
plt.show()

plt.contourf(data3)
plt.xlim(0,60)
plt.ylim(0,45)
plt.show()

plt.contourf(data4)
plt.xlim(0,60)
plt.ylim(0,45)
plt.show()

plt.contourf(data5)
plt.xlim(0,60)
plt.ylim(0,45)
plt.show()

有人建议:

data5 = ma.masked_where(x2 - y2 > -5 , data4)

但输出图看起来像这样,这不是本意,因为它掩盖了我想保留的区域:

如果我正确理解你的问题,试试这个

data5 = ma.masked_where(x2 - y2 < -5 , data4)

结果是