python中的遮罩等高线图,在真与假之间没有填充

python中的遮罩等高线图,在真与假之间没有填充,python,matplotlib,mask,contour,Python,Matplotlib,Mask,Contour,我想从蒙版阵列中画一条等高线 问题是matplotlib在“未知”区域的True和False之间绘制了几行,而不是一行 P>无论行是在中间还是在真或假的边缘,所以在下面的简单例子中,我想在y=1,y=2或y=1.5的情况下都有一行。 X = np.array([1,2,3,4,5]) Y = np.array([0,1,2,3]) Z_mask = np.array([[False, False, False, False, False], [Fals

我想从蒙版阵列中画一条等高线

问题是matplotlib在“未知”区域的True和False之间绘制了几行,而不是一行

<> P>无论行是在中间还是在真或假的边缘,所以在下面的简单例子中,我想在y=1,y=2或y=1.5的情况下都有一行。

X = np.array([1,2,3,4,5])

Y = np.array([0,1,2,3])

Z_mask = np.array([[False, False, False, False, False],
                   [False, False, False, False, False],
                   [True, True, True, True, True],
                   [True, True, True, True, True]])

plt.contour(X,Y,Z_mask)           

plt.show() 
图像打印示例


我尝试了plt.contour的不同关键字参数,但似乎没有一个能起作用

您可以使用第四个参数告诉
等高线
要绘制多少层:

从文档中:

轮廓(X,Y,Z,N)

轮廓高达N个自动选择的级别

所以对于你的情节:

plt.contour(X,Y,Z_mask,1)           
产生:


旁注:对于上面评论中的“变通方法”,不需要将掩码数组从
False
True
转换为
0
1
,就像在
python
中一样,布尔值只是整数的一个子类:

In [14]: False == 0
Out[14]: True

In [15]: True == 1
Out[15]: True

我找到了一个难看的解决办法。如果我将掩码数组转换为0和1,我可以使用以下方法获得所需的结果。plt.轮廓(X,Y,Z_掩模,水平=[0.5])。我仍然希望能找到一个解决方案来代替使用屏蔽阵列。