最大化 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
。
我想 "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
。