最大化 seaborn 调色板中的色彩空间

Maximize colorspace in seaborn palette

我想 "maximize" 颜色 space 用于 seaborn 中的绘图。我的意思是我希望颜色范围包含给定调色板中的两种极端颜色。

例如,如果我选择 matplotlib 调色板 "YlGn_r" 并使用 pandas 绘制它:

%matplotlib inline
import pandas as pd
import numpy as np 
import seaborn as sns

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot(kind='bar', colormap='YlGn_r', width=.8);

如果我用相同的调色板绘制它,但 seaborn 颜色不同:

df['x'] = df.index
sns.barplot(x='x', y='value', hue='variable', data=pd.melt(df, 'x'), palette='YlGn_r')

我意识到这可能是有意为之的行为,我并不完全反对,但是有没有办法强制 seaborn 使用全频谱?我有很多图需要颜色匹配,有些在 seaborn 中,有些在 matplotlib 中。谢谢!

您可以在接受调色板名称的任何地方传递颜色列表,因此如果您需要特定颜色,这是获取它们的最佳方式。一种方法是 mpl.cm.YlGn_r(np.linspace(0, 1, 4)).

但是,barplot 也会稍微降低颜色的饱和度,这对于大块色块看起来更好,但如果您不想这样,您可以设置 saturation=1