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

2024-04-25 03:31:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

超出colorbar边界的值的默认颜色是白色,如果colormap的结束颜色不是白色,则可能会与周围的数据发生明显冲突。示例图像如下所示-请注意,当值超过色条的负范围时,会出现白色填充:

enter image description here

我相信有一种方法可以指定如果使用rcParams超过了每一个界限,应该使用哪种颜色,但是我在任何地方都找不到关于这一点的信息。

任何帮助都将不胜感激。


Tags: 数据方法图像网格示例颜色静态边界
1条回答
网友
1楼 · 发布于 2024-04-25 03:31:47

可以使用colormap的set_overset_under方法设置越界颜色;请参见the documentation。创建colormap时需要指定这些值。不过,我没有看到任何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)

“extend”参数是关键;它告诉courtf继续绘制所有等高线,但将给定范围之外的所有等高线折叠为“太大”和“太小”类别。在调试过程中,cs.set_clim调用对于解决我在courtoff中发现的一个奇怪问题是必要的;由于某些原因,当您使用extend时,它会操纵数据限制,因此我们需要将它们重置回我们希望的状态。

另外,作为一种风格,你不应该做像Colormap.set_under(cmap,color='k')这样的事情。这是调用类方法并显式地传入实例,这是一种奇怪的方法。只要做cmap.set_under(color="k")

相关问题 更多 >