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

Eli*_*i S 2 python matplotlib contour color-mapping

我想在matplotlib(Win7,1.1.0)中创建一个填充的等高线图.我想突出显示某些值,并且级别更接近于log而不是线性.

有许多适合我的色彩图,但我忽略了我对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)
Run Code Online (Sandbox Code Playgroud)

我希望这个片段足以至少开始对话.

谢谢,Eli

And*_*lev 5

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

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()
Run Code Online (Sandbox Code Playgroud)

这产生了

在此输入图像描述

将其与默认Normalize行为进行比较:

在此输入图像描述

希望有所帮助.