Python 对于具有自定义级别的matplotlib contourf plot,将忽略Colormap

Python 对于具有自定义级别的matplotlib contourf plot,将忽略Colormap,python,matplotlib,contour,color-mapping,Python,Matplotlib,Contour,Color Mapping,我正在尝试在matplotlib(Win7,1.1.0)中创建填充等高线图。我想突出显示某些值,并且级别更接近对数而不是线性 有许多颜色贴图适合我,但我对cmap的选择被忽略了 我需要创建一个自定义的“规范化”吗?如果是,每个轮廓是否根据其边缘值着色,然后用相同的颜色填充到下一个较低的值?为什么这种症状忽略了我的颜色贴图。。。这是不是在构建过程中出现了异常,而我的请求被悄悄地忽略了 我的原始数据缺少值。我一直在做这个,大大小小的。。。在每种情况下,我都试图屏蔽它们,而不是屏蔽“外部”值。我还尝试

我正在尝试在matplotlib(Win7,1.1.0)中创建填充等高线图。我想突出显示某些值,并且级别更接近对数而不是线性

有许多颜色贴图适合我,但我对cmap的选择被忽略了

我需要创建一个自定义的“规范化”吗?如果是,每个轮廓是否根据其边缘值着色,然后用相同的颜色填充到下一个较低的值?为什么这种症状忽略了我的颜色贴图。。。这是不是在构建过程中出现了异常,而我的请求被悄悄地忽略了

我的原始数据缺少值。我一直在做这个,大大小小的。。。在每种情况下,我都试图屏蔽它们,而不是屏蔽“外部”值。我还尝试了使用默认级别和规范的所有排列

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.normalize(0,32)
cs = plt.contourf(x,z,data,cmap=cm.gray, levels=lev, norm = norml)
我希望这个片段至少足以开始对话

谢谢,
Eli

如果我理解正确,您需要使用级别作为基础,而不是默认的线性缩放,将数据重新缩放为颜色。如果这是正确的,那么您需要使用作为标准因子。考虑下面的例子:

x = np.arange(0,8,0.1)
y = np.arange(0,8,0.1)
z = (x[:,None]-4) ** 2 + (y[None,:]-4) ** 2

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
cs = plt.contourf(x, y, z, cmap = cm.jet, levels = lev, norm = norml)
plt.show()
这就产生了

将其与默认的
规范化
行为进行比较:

希望有帮助