二进制轮廓级别

Binary Contour Levels

我有一个等值线数据集,其中Z值为0或1。我想填充Z等于1的区域。我不想做任何插值。

但是,当我使用函数时

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

returns错误,级别不在数据范围内。我不确定如何进行。谢谢。

对于填充值,使用 contourf。此外,1 在数据范围之外,因为它是您的最大水平,并且等高线水平是在范围之间绘制的。尝试:

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

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

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