2017-04-13 360 views
2

我搜索了四周,发现接近工作的东西,但没有什么能满足我需要的东西。修改matplotlib中的viridis颜色表(替换一些颜色)

基本上,我真的很喜欢viridis colormap作为一个起点。但是,我想用白色替换地图最底部的紫色。

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

例如,我尝试以下(从这里Matplotlib discrete colorbar) -

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) 

其中一期工程完美和准确地做什么,我需要“喷气机”,但是当我更换“喷气机”与“狗尾草”我得到出现以下错误

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

如何解决此问题并简单地按照我的要求做?

任何援助都将不胜感激。

谢谢!

回答

0

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) 

以这种方式,它将适用于任何颜色映射,不仅仅是那些被分割的颜色映射。