如何在 python Seaborn 中更改调色板中标签的颜色分配?

how to change assignment of colors to labels from palette in python Seaborn?

如何更改 seaborn 使用的颜色顺序?示例:

import seaborn as sns
import pandas
data = pandas.DataFrame({"x": [1,2,3], "y": [1,1,1], "color": ["a", "b", "c"]})
sns.pointplot(x="x", y="y", hue="color", data=data)

如何更改 "hue" 中默认调色板的颜色分配?例如,与其从调色板中选择 (blue, green, red),不如选择 (green, blue, red)?我想保持相同的调色板,只是改变颜色的顺序。

调色板上的 Seaborn docs 围绕此起舞,但它是这样工作的:

  • 首先,请注意 color_palette() 将 return 您当前的调色板。
  • 其次,执行文档中的示例并将当前调色板分配给某个变量,如 current_palette = sns.color_palette()
  • 第三,请注意该对象支持__get_item__,因此您可以获得其中的第一种和第二种颜色

    first = current_palette[0]
    second = current_palette[1]
    
  • 第四:注意set_palette()函数,文档注释将接受RGB元组列表。

  • 最后,制作一个新的调色板作为

    sns.set_palette(
        [second, first] + current_palette[2:]
    )
    

pointplot 接受键中包含级别名称,值中包含颜色名称的字典,因此您可以这样做。换句话说,palette=dict(a="g", b="b", c="r")。这是最安全的,但如果您知道要获取(或指定)的色调顺序,您也可以执行 palette=["g", "b", "r"].