我有一个看起来很好的情节
import seaborn as sns
tips = sns.load_dataset('tips')
sns.violinplot('day', 'total_bill', data=tips, hue='sex')
但是,当我想使用FacetGrid
对象创建构面时,
在这个例子中,小提琴被绘制在彼此的顶部。
我如何防止发生这种情况,以便男性和女性彼此相邻?
facet = sns.FacetGrid(tips, col='time', row='smoker', hue='sex',
hue_kws={'Male':'blue', 'Female':'green'}).
facet.map(sns.violinplot, 'day', 'total_bill')
答案 0 :(得分:2)
似乎解决方案是:
import seaborn as sns
facet = sns.FacetGrid(tips, col="time", row='smoker')
facet.map(sns.violinplot, 'day', 'total_bill', "sex")
将sex
传递到map
来电似乎做了我想要的事情。
但是sex
分配给的参数的名称是什么?
它不是hue
。有人知道这里实际传递了什么吗?
另一种方法是从matplotlib.pyplot
级
import matplotlib.pyplot as plt
import seaborn as sns
facet_fig = plt.figure()
ax1 = facet_fig.add_subplot(2, 2, 1)
ax2 = facet_fig.add_subplot(2, 2, 2)
ax3 = facet_fig.add_subplot(2, 2, 3)
ax4 = facet_fig.add_subplot(2, 2, 4)
sns.violinplot(x='day', y='total_bill', hue='sex', ax=ax1,
data=tips[(tips.smoker=='Yes') & (tips.time == 'Lunch')])
sns.violinplot(x='day', y='total_bill', hue='sex', ax=ax2,
data=tips[(tips.smoker=='Yes') & (tips.time == 'Dinner')])
sns.violinplot(x='day', y='total_bill', hue='sex', ax=ax3,
data=tips[(tips.smoker=='No') & (tips.time == 'Lunch')])
sns.violinplot(x='day', y='total_bill', hue='sex', ax=ax4,
data=tips[(tips.smoker=='No') & (tips.time == 'Dinner')])
答案 1 :(得分:2)