Seaborn 调色板不适用于线图

Posted

技术标签:

【中文标题】Seaborn 调色板不适用于线图【英文标题】:Seaborn Color Palette not working appropiate with lineplot 【发布时间】:2019-01-16 16:16:32 【问题描述】:

我在为线条图自定义颜色时遇到了一点麻烦。我想用顺序调色板显示一组光谱。参数“palette="blues" 工作正常,但不接受任何适当的颜色列表(如“Blues_d”),其中不包含任何亮色。

您可以在下面看到我正在使用的代码。

color = (sns.dark_palette("purple"))
sns.set()

ax = sns.lineplot(x="Wavelength", y="Absorption", hue="t (min)", lw=1, data=df1, palette=color, legend="brief")

问题是,我收到以下错误:

ValueError:调色板列表的颜色数量错误。

所以问题是:如何使用 lineplot 函数并使用蓝色、红色或任何不包含任何亮色的顺序调色板?

我使用的是 pandas 0.23.3 版、matplotlib 2.2.2 版和 seaborn 0.9.0 版

【问题讨论】:

老实说,为什么它不能自己做到这一点,检查不同系列想要情节的数量少于提供的颜色数量,而不是完全匹配 @ifly6 '因为 matplotlib 和 seaborn 已经变得一团糟 :-) 【参考方案1】:

由于您在hue 选项中提到了t (min) 列,因此您需要知道该列的唯一值总数。

假设列中有 5 个唯一值。因此,您可以将数字设置为sns.color_paletten_colors 选项:

ax = sns.lineplot(x="Wavelength", 
                  y="Absorption", 
                  hue="t (min)", 
                  lw=1, 
                  data=df1, 
                  palette=sns.color_palette('coolwarm', n_colors=5), 
                  legend="brief")

【讨论】:

【参考方案2】:

如果您通过在 sns.color_palette 中将“as_cmap”参数设置为 True 将调色板设置为颜色图,则无需担心颜色计数:

ax = sns.lineplot(x="Wavelength", 
                      y="Absorption", 
                      hue="t (min)", 
                      lw=1, 
                      data=df1, 
                      palette=sns.color_palette('coolwarm', as_cmap = True), 
                      legend="brief")

【讨论】:

我认为大多数人来这个问题都会得到这个答案的帮助。谢谢。 如果您不直接写入 ax 对象,此方法将失败:sns.lineplot(data=out_df, x="lag", y="rse", hue="period", palette=sns.color_palette('coolwarm', as_cmap = True)) 生成 TypeError: 'LinearSegmentedColormap' 对象不可迭代 - 上述方法工作正常 @MStoner 我不明白你的评论。哪种“上述方法”效果很好? 按照 Hakan Özler 的评论设置 ncolors 的方法。很抱歉造成混乱【参考方案3】:
Palette = ["#090364", "#091e75"] #define your preference
sns.set_style("whitegrid")
sns.set_palette(Palette) #use the list defined in the function
plot = sns.countplot(df['Purchased']) #Enjoy ploting

【讨论】:

以上是关于Seaborn 调色板不适用于线图的主要内容,如果未能解决你的问题,请参考以下文章

Seaborn 调色板 - 防止颜色回收

Seaborn的调色板(palette)

python Seaborn - 设置自定义调色板

第二章:seaborn调色板

seaborn的调色板刻度边框标签数据集等的一些解释

seaborn的调色板刻度边框标签数据集等的一些解释