【问题标题】:Extract RGB or 6 digit code from Seaborn palette从 Seaborn 调色板中提取 RGB 或 6 位代码
【发布时间】:2016-11-10 00:10:23
【问题描述】:

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 位代码:

Converting a RGB color tuple to a six digit code, in Python

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

【问题讨论】:

    标签: python rgb seaborn


    【解决方案1】:

    如果“6位代码”是指十六进制代码,您也可以这样做:

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

    【讨论】:

    • 有效!它返回一个添加了# 的字符串列表。见:import seaborn; pal_hls = seaborn.hls_palette(12, l=.3, s=.8).as_hex(); print(pal_hls);
    • 非常感谢!这正是我所需要的。
    • 这应该是公认的答案。当前接受的答案有效,但它手动重新发明轮子而不是使用现有的内置函数
    【解决方案2】:

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

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

    然后将它们存储在一个新列表中以获得您的 RGB 值列表。

    【讨论】:

      猜你喜欢
      • 2011-04-16
      • 1970-01-01
      • 2015-05-09
      • 2011-11-22
      • 2014-02-04
      • 2021-08-01
      • 2020-12-16
      • 1970-01-01
      相关资源
      最近更新 更多