从Seaborn调色板中提取RGB或6位代码



Seaborn有一个选项来创建漂亮的调色板。我希望使用这些调色板来生成在地图中很好地协同工作的颜色,其中国家根据某些属性进行着色。以下代码生成从浅到深的 8 种紫色阴影。另请注意,需要能够指定颜色的数量,因此我不能只使用已定义颜色的固定调色板。

import seaborn as sns
num_shades = 8
sns.palplot(sns.cubehelix_palette(num_shades))

如果我运行相同但以这样的列表运行:

color_list = sns.cubehelix_palette(num_shades)

你会得到:

[[0.9312692223325372, 0.8201921796082118, 0.7971480974663592], ... 

这些显然不是我需要的RGB值。

1)这些颜色是什么格式?2) 如何转换为 RGB 或 6 位代码?

我尝试搜索了很长时间,但没有找到答案。我看过这里和其他 seaborn 文档:

https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.set_color_codes.html

我可以使用以下命令从 RGB 转换为 6 位代码:

在 Python 中将 RGB 颜色元组转换为六位数代码

但是我坚持如何直接或通过获取RGB值来做到这一点。任何帮助将不胜感激。

如果您所说的"6 位代码"是指十六进制代码,您还可以执行以下操作:

pal = sns.color_palette(...)
pal.as_hex()

您获得的值是百分比 255,即最大 RGB 值。只需将每个三元组的值乘以 255(如果您愿意,可以四舍五入)即可获得 RGB 值。

for color in color_list:
    for value in color:
        value *= 255

然后将这些值存储在新列表中,以获得 RGB 值列表。

只是在@mwaskom答案中添加一点,因为我还不允许发表评论。

pal = sns.color_palette(...)
pal.as_hex()

在我的情况下,这是给出如图1所示的颜色(使用python 3.9),图片1

如果你想要颜色十六进制代码,你可以像这样切片:

pal = sns.color_palette(...)
pal.as_hex()[:]

对于特定颜色,例如第一种颜色,请使用以下命令:

pal = sns.color_palette(...)
pal.as_hex()[0]

最新更新