我有一些包含数据的numpy数组,想要在一个二维网格上进行可视化。其中一些数据是不合理的,我想把它们屏蔽掉。但是,我无法正确地设置tricontour
的mask属性。我尝试了:
import matplotlib.pyplot as mp
import numpy as np
with open('some_data.dat', 'r') as infile:
x, y, z = np.loadtxt(infile, usecols=(0, 1, 2), unpack=True)
isbad = np.less(z, 1.4) | np.greater(z, 2.1)
mp.tricontourf(x, y, z, mask = isbad)
但是生成的图形并没有被遮盖。我尝试了在matplotlib中遮盖contourf图的一部分,即masking part of a contourf plot in matplotlib。
z2 = np.ma.array(z, mask= isbad)
mp.tricontourf(x, y, z2)
这也没有起作用。我想使用tricontourf
代替contourf
,因为我不想将数据网格化。
z[isbad] = np.nan
在调用tricontourf时会导致分段错误。
这是一个图例,红色的颜色是我想标记为非物理的。
mask = np.sum(isbad[triang.triangles],axis=1)>1
来测试是否有2或3个节点是可疑的,因为我想要看到至少有一个节点在范围内的结果。 - Dave X