关于Matplotlib:如何在python Seaborn中从调色板更改颜色对标签的分配?

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

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

1
2
3
4
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)

如何更改"色相"中默认调色板的颜色分配?例如,而不是从调色板中获得(蓝色,绿色,红色),而是获得(绿色,蓝色,红色)?我想保持相同的调色板,只是更改颜色的顺序。


pointplot接受具有键名称和颜色名称值的字典,因此您可以执行此操作。换句话说,palette=dict(a="g", b="b", c="r")。这是最安全的方法,但是如果您知道要获得(或指定)色相的顺序,则也可以执行palette=["g","b","r"]


调色板上的Seaborn文档围绕着它跳舞,但这是它的工作方式:

  • 首先,请注意color_palette()将返回您当前的调色板。
  • 其次,从文档中进行示例,然后将当前调色板分配给某个变量作为current_palette = sns.color_palette()
  • 第三,请注意,该对象支持__get_item__,因此您可以将其中的第一和第二种颜色设为

    1
    2
    first = current_palette[0]
    second = current_palette[1]

  • 第四:注意set_palette()函数,文档注释将接受RGB元组列表。

  • 最后,创建一个新的调色板为

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