python - 对于具有自定义级别的 matplotlib contourf 图,颜色图被忽略

标签 python matplotlib contour color-mapping

我正在尝试在 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()

这产生

enter image description here

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

enter image description here

希望对您有所帮助。

关于python - 对于具有自定义级别的 matplotlib contourf 图,颜色图被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321390/

相关文章:

python - 在 matplotlib 中跨子图绘制分界线

python - Python 中颜色条的自定义(截断并添加更多颜色)

python - 在使用 OpenCv 进行图像处理期间保留字符顺序

python - Matplotlib 绘图窗口是黑色的

python - 每次函数调用时导入 Redshift Python UDF

python - Apache Zeppelin - 修改默认语法高亮

python - 如何突出显示时间序列线图的周末

Python Pandas read_sql_query “' NoneType' object is not iterable”错误

python - **凹**非网格数据的matplotlib轮廓/轮廓

opencv - 如何打印轮廓opencv内的所有坐标