【问题标题】:how to change assignment of colors to labels from palette in python Seaborn?如何从 python Seaborn 中的调色板更改颜色到标签的分配?
【发布时间】:2015-11-20 16:29:04
【问题描述】:

如何更改 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)

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

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

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

    【讨论】:

    • 但在这里我想使用默认调色板中的三种颜色,它们不是“g”、“b”、“r”——它们是不同的颜色。我怎样才能得到这些?是否有一个函数可以给定多个类别将返回默认调色板中的十六进制代码?
    • 哎呀,忘了,如果你这样做 sns.set_color_codes()sns.set(color_codes=True) 它会使 matlab 将单个字母字符串解释为 seaborn 颜色。
    【解决方案2】:

    调色板上的Seaborn docs 围绕着这个跳舞,但它是这样工作的:

    • 首先,请注意color_palette() 将返回您当前的调色板。
    • 其次,执行文档中的示例并将当前调色板分配给某个变量,例如 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:]
      )
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多