python中的蒙面轮廓图,在True-False之间没有填充

时间:2015-11-02 14:26:24

标签: python matplotlib mask contour

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

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

如果线位于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() 

图像绘图示例
Image plot example

我已经为plt.contour尝试了不同的关键字参数,但它们似乎都没有完成这项工作。

1 个答案:

答案 0 :(得分:0)

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

来自文档:

  

contour(X,Y,Z,N)

     

轮廓最多N个自动选择的水平。

所以你的情节:

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

产地:

enter image description here

旁注:对于您的解决方法'在上面的评论中,您无需将掩码数组从FalseTrue转换为01,就像在python中一样,布尔值只是整数的子类:

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

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