二进制轮廓级别

时间:2020-04-07 20:16:38

标签: python matplotlib contour

我有一个Z值为0或1的轮廓数据集。我想填写Z等于1的区域。我不想进行任何插值。

但是,当我使用该功能时

    CS = ax.contour(X1, X2, Z, levels = [1])

它返回一个错误,表明电平不在数据范围内。我不确定如何进行。谢谢。

2 个答案:

答案 0 :(得分:0)

对于填充值,使用轮廓线f。此外,1在数据范围之外,因为它是您的最大级别,并且轮廓级别绘制在范围之间。试试:

CS = ax.contourf(X1, X2, Z, levels=[0.2, 0.9])

答案 1 :(得分:0)

这可以通过将contourf与两个级别一起使用来完成,将较低的级别设置为零,将最高级别设置为小于1,如下所示:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1, 100)
X, Y = np.meshgrid(x, x)
Z = np.sin(X)*np.sin(Y)

levels = np.linspace(-1, 1, 400)
zdata = np.sin(8*X)*np.sin(8*Y)

plt.contourf(X, Y, 1*(zdata>=0.5), levels=[0,.9]) # polka dot z-values here are 0s and 1s

enter image description here