python - Prevent Overlapping in FacetGrid using col, row, and hue -
i have plot looks fine
import seaborn sns tips = sns.load_dataset('tips') sns.violinplot('day', 'total_bill', data=tips, hue='sex')
however, when want create facet using facetgrid
object, violins, in example, plotted on top of eachother. how prevent tha happening male , female plotted next each other?
facet = sns.facetgrid(tips, col='time', row='smoker', hue='sex', hue_kws={'male':'blue', 'female':'green'}). facet.map(sns.violinplot, 'day', 'total_bill')
seems solution is:
import seaborn sns facet = sns.facetgrid(tips, col="time", row='smoker') facet.map(sns.violinplot, 'day', 'total_bill', "sex")
passing sex
map
call seems wanted. name of parameter sex
assigned to? it's not hue
. know being passed here?
the other way barebones matplotlib.pyplot
level
import matplotlib.pyplot plt import seaborn 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')])
Comments
Post a Comment