首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ColorMap转换为列表

将ColorMap转换为列表
EN

Stack Overflow用户
提问于 2021-12-11 10:50:59
回答 1查看 737关注 0票数 0

如果我跑了

代码语言:javascript
复制
import seaborn as sns

list(sns.diverging_palette(230, 20, as_cmap=False))

然后我得到

代码语言:javascript
复制
[(0.2509335357076959, 0.4944143311197457, 0.6104170295454565),
 (0.5266567751883763, 0.6751928585334119, 0.7467240840661897),
 (0.8050726244296104, 0.8577368012538521, 0.884362262166227),
 (0.9140860646530862, 0.8246826885128927, 0.8028133239419792),
 (0.8384144678873866, 0.5785740917778832, 0.5129511551488873),
 (0.7634747047461135, 0.3348456555528834, 0.225892295531744)]

但是,如果我做了

代码语言:javascript
复制
list(sns.diverging_palette(230, 20, as_cmap=True))

然后我得到一个错误:

代码语言:javascript
复制
TypeError: 'LinearSegmentedColormap' object is not iterable

是否有一种将Colormap转换为列表的方法,就像我在传递as_cmap=False时所做的那样

最后我想说的是:

代码语言:javascript
复制
def func(cmap):
    ...

cmap = sns.diverging_palette(230, 20, as_cmap=True)
func(cmap)

返回像上面那样的列表。

我怎么能写这样一个func

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-11 11:11:33

在内部,matplotlib颜色图只是256种颜色的列表。在外部,它是一个将0到1之间的数字映射到这些颜色之一的函数。因此,您可以使用介于0到1之间的256个等距点的数组调用颜色映射,以获得列表:

代码语言:javascript
复制
import seaborn as sns
import numpy as np

cmap_as_list1 = sns.diverging_palette(230, 20, as_cmap=True)(np.linspace(0, 1, 256))
sns.palplot(cmap_as_list1)

Seaborn将其调色板存储为颜色列表,因此您可以使用as_cmap=False并询问n=256颜色:

代码语言:javascript
复制
cmap_as_list2 = sns.diverging_palette(230, 20, n=256, as_cmap=False)
sns.palplot(cmap_as_list2)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70314497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档