我正在尝试在 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)
我希望这段代码至少足以开始对话。
谢谢, 以利
最佳答案
如果我对您的理解正确,您需要使用级别而不是默认线性缩放作为基础将数据重新缩放为颜色。如果是这样,那么您需要使用 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()
这产生
将其与默认的 Normalize
行为进行比较:
希望对您有所帮助。
关于python - 对于具有自定义级别的 matplotlib contourf 图,颜色图被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321390/