python 中的蒙面等高线图,真假之间没有填充物

Masked contour plot in python without filler between True-False

我想从蒙版数组中绘制一条轮廓线。

问题是 matplotlib 在 True 和 False 之间的 "unknown" 区域画了几条线,而不是一条线。

线是在 True 或 False 的中间还是边缘并不重要,所以在下面的简单示例中,我想要 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 尝试了不同的关键字参数,但其中 none 似乎可以完成这项工作。

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

来自文档:

contour(X,Y,Z,N)

contour up to N automatically-chosen levels.

所以对于你的情节:

plt.contour(X,Y,Z_mask,1)           

生产:


旁注:对于上面评论中的 'workaround',无需将掩码数组从 FalseTrue 转换为 01,如 python,布尔值只是整数的一个子类:

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

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