5

我四处搜寻,发现了一些接近工作但没有完全适合我需要的东西。

基本上,我真的很喜欢将 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'

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

任何帮助都将不胜感激。

谢谢!

4

1 回答 1

6

from_list()方法是LinearSegmentedColormap类的静态方法。在类的实例上调用它可能没有太大意义,就像在喷气式地图的情况下一样(尽管它确实有效)。

现在,'viridis' 被实现为 aListedColormap而不是 a 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)

通过这种方式,它只适用于任何颜色图,而不仅仅是那些分段的颜色图。

于 2017-04-13T06:59:23.603 回答