我有一些numpy数组,其中包含我将在2D网格上可视化的数据。有些数据是非物理的,我想屏蔽这些数据。但是,我不知道如何正确设置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)
但最终的数字根本没有被掩盖。我试了masking part of a contourf plot in matplotlib,即。
z2 = np.ma.array(z, mask= isbad)
mp.tricontourf(x, y, z2)
也没有用。我想使用contourf
的tricontourf
instrad,因为我不想网格化我的数据。
z[isbad] = np.nan
调用tricontourf时导致分段错误
这是图,红色是我想标记为非物质的颜色。
2条答案
按热度按时间k0pti3hp1#
好戏来了。我需要收集三角形的索引(这是索引到z!),评估它们是否良好,然后仅接受至少一个角有效的三角形(将维度从(ntri,3)减少到ntri
受此链接启发:http://matplotlib.org/examples/pylab_examples/tripcolor_demo.html
mum43rcc2#
《华尔街日报》的回答对我不起作用,因为它没有删除某些被屏蔽的点(我认为不是所有的节点都是坏的)。
This solution做了: