修改 viridis 颜色图(替换一些颜色)



我四处搜索,找到了接近工作的东西,但没有一个完全适合我所需要的。

基本上,我真的很喜欢viridis颜色图作为起点。但是,我想将地图最低端的紫色替换为白色。

我尝试使用set_under()但这不符合我的需求。我需要简单地用白色替换紫色。

例如,我尝试了以下内容(从这里 Matplotlib 离散颜色条(-

cmap = plt.get_cmap('jet')
cmaplist = [cmap(i) for i in range(cmap.N)]
cmaplist[0] = (1.0,1.0,1.0,1.0)
cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N)

它工作得很好,并且完全符合我对"jet"的需求,但是当我用"viridis"替换"jet"时,我收到以下错误

AttributeError: 'ListedColormap' object has no attribute 'from_list'

我怎样才能解决这个问题,简单地做我想做的事?

from_list() 方法是LinearSegmentedColormap类的静态方法。在类的实例上调用它可能没有太大意义,就像在喷射贴图的情况下一样(尽管它当然可以工作(。

现在,"viridis"被实现为ListedColormap而不是LinearSegmentedColormap,这意味着它没有这种方法。

在任何情况下,从类本身调用静态方法更有意义。

import matplotlib.colors
cmap = plt.cm.viridis
cmaplist = [cmap(i) for i in range(cmap.N)]
cmaplist[0] = (1.0,1.0,1.0,1.0)
cmap = matplotlib.colors.LinearSegmentedColormap.from_list('mcm',cmaplist, cmap.N)

这样,它将适用于任何颜色图,而不仅仅是那些分段的颜色图。

最新更新