我有五个并排分布图,通常使用color属性更改每个分布图的颜色。但是,现在我想使用Seaborn的粗糙调色板,而且我不知道如何将调色板中的颜色应用于每个图表。我很确定这只是我的事。
# sns.set(style="white", palette="muted", color_codes=True)
sns.set(style="white", palette="husl", color_codes=True)
# Set up the matplotlib figure
f, axes = plt.subplots(ncols=5, figsize=(15, 4))
sns.despine(left=True)
# Rating of 1
sns.distplot(df1[df1['rating']==1]['cost'], kde=False, color='c', ax=axes[0], axlabel="Rating of 1")
# Rating of 2
sns.distplot(df1[df1['rating']==2]['cost'], kde=False, color='k', ax=axes[1], axlabel='Rating of 2')
# Rating of 3
sns.distplot(df1[df1['rating']==3]['cost'], kde=False, color="g", ax=axes[2], axlabel='Rating of 3')
# Rating of 4
sns.distplot(df1[df1['rating']==4]['cost'], kde=False, color="m", ax=axes[3], axlabel='Rating of 4')
# Rating of 5
sns.distplot(df1[df1['rating']==5]['cost'], kde=False, color="b", ax=axes[4], axlabel='Rating of 5')
plt.setp(axes, yticks=[])
plt.tight_layout()
答案 0 :(得分:1)
Seaborn通过husl_palette
提供了一个到husl空间的接口。您可以创建具有唯一类别(这里称为“等级”)的颜色的调色板。然后,对调色板进行索引或对其进行迭代。后者显示如下。
import matplotlib.pyplot as plt
import seaborn as sns; sns.set(style="white")
import pandas as pd
import numpy as np
df = pd.DataFrame({"cost" : np.random.randn(600),
"rating" : np.random.choice(np.arange(1,6), size=600)})
ratings = np.unique(df.rating.values)
palette = iter(sns.husl_palette(len(ratings)))
f, axes = plt.subplots(ncols=len(ratings), figsize=(15, 4))
sns.despine(left=True)
for (n, rat), ax in zip(df.groupby("rating"), axes):
sns.distplot(rat["cost"], kde=False, color=next(palette), ax=ax, axlabel=f"Rating of {n}")
plt.setp(axes, yticks=[])
plt.tight_layout()
plt.show()