Python matplotlib更改超出颜色条范围的值的默认颜色

Lev*_*wan 23 python matplotlib contour color-mapping colorbar

当使用颜色填充网格时,例如在pyplot中使用contourf时,我需要找到一种方法来更改pyplot用于填充超出颜色条指定范围的数据的颜色.我希望有一个静态颜色条不会自动更改其范围以适应数据的最大/最小值,因此偶尔会超出其边界的极值是不可避免的,并且需要为这些值指定颜色.

超出颜色条边界的值的默认颜色为白色,如果颜色图的最终颜色不是白色,则可能与周围数据明显冲突.示例图像如下所示 - 当值超出颜色条的负范围时,请注意白色填充:

在此输入图像描述

我相信有一种方法可以指定在每个边界使用哪种颜色,如果超过它们使用rcParams,但我无法在任何地方找到相关信息.

任何帮助,将不胜感激.

Bre*_*arn 29

可以使用colormap 的set_overand和set_under方法设置越界颜色; 看文档.创建色彩映射时,您需要指定这些值.但是,我没有看到任何matplotlibrc设置为此设置默认设置.您可能还想在matplotlib邮件列表上询问.

编辑:我看到发生了什么.您描述的白色区域不超出颜色范围的限制.它只是轴的空白背景.由于您只绘制某些级别,因此根本不会绘制该范围之外的任何级别,将这些区域留空.要获得您想要的,请执行以下操作:

cs = pyplot.contourf(x,y,z,levels=np.arange(50, 220, 20), cmap=pyplot.cm.jet, extend="both")
cs.cmap.set_under('k')
cs.set_clim(50, 210)
cb = pyplot.colorbar(cs)
Run Code Online (Sandbox Code Playgroud)

"扩展"论证是关键; 它告诉contourf继续绘制所有轮廓,但是将给定范围之外的所有轮廓折叠成"太大"和"太小"的类别.这个cs.set_clim调用是必要的,以解决我在contourf中发现的奇怪问题,同时调试它; 出于某种原因,当您使用时extend,它会操纵数据限制,因此我们需要将它们重置为我们想要的状态.

而且,就风格而言,你不应该做的事情Colormap.set_under(cmap,color='k').这是调用类方法并显式传递实例,这是一种奇怪的方法.做吧cmap.set_under(color="k").