2016-02-23 2 views
2

Я хотел бы «увеличить» цветовое пространство для участка в морском саду. Под этим я подразумеваю, что я хотел бы, чтобы диапазон цветов включал два крайних цвета в данной палитре.Максимизировать цветовое пространство в палитре морского дерева

Например, если я выбираю Matplotlib цветовую палитру «YlGn_r» и сюжет его с пандами:

%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); 

mpl_colors

Если я сюжет это с той же палитре, но Сиборн цвета разные:

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

sns_colors

Я понимаю, что это, вероятно, намеренное поведение, против которого я не совсем против, однако есть ли способ заставить seaborn использовать весь спектр? У меня много сюжетов, которым нужны цвета, чтобы соответствовать, некоторые в seaborn и некоторые с matplotlib. Благодаря!

ответ

2

Вы можете просто передать список цветов в любом месте, где принято имя палитры, поэтому, если вам нужны определенные цвета, это лучший способ их получить. Один из способов - mpl.cm.YlGn_r(np.linspace(0, 1, 4)).

Однако barplot также обесцветить цвета немного, что выглядит лучше с большими патчами, но если вы не хотите, чтобы вы могли установить saturation=1.

+0

Я делал что-то похожее на это, но это немного более кратким и простым, спасибо. – johnchase

+0

Любые предложения о том, как использовать один и тот же подход для получения набора «максимально» разных цветов (для произвольного «большого количества цветов») в цветовом пространстве, которое визуально близко (как и отлично для визуализации) до «Set1», 'или' "Set2" 'и т. д.? –

Смежные вопросы