二进制轮廓级别
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
我有一个等值线数据集,其中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