J'ai une trame de données comme celle-ci
import seaborn as sns
import pandas as pd
%pylab inline
df = pd.DataFrame({'a' :['one','one','two','two','one','two','one','one','one','two'], 'b': [1,2,1,2,1,2,1,2,1,1], 'c': [1,2,3,4,6,1,2,3,4,6]})
Un seul boxplot est OK
sns.boxplot( y="b", x= "a", data=df, orient='v' )
Mais je veux construire un sous-intrigue pour toutes les variables. je fais
names = ['b', 'c']
plt.subplots(1,2)
sub = []
for name in names:
ax = sns.boxplot( y=name, x= "a", data=df, orient='v' )
sub.append(ax)
et je reçois
comment le réparer? merci pour votre aide
Nous créons la figure avec les sous-parcelles:
f, axes = plt.subplots(1, 2)
Où axes est un tableau avec chaque sous-intrigue.
Ensuite, nous disons à chaque tracé dans quel sous-tracé nous les voulons avec l'argument ax
.
sns.boxplot( y="b", x= "a", data=df, orient='v' , ax=axes[0])
sns.boxplot( y="c", x= "a", data=df, orient='v' , ax=axes[1])
Et le résultat est:
names = ['b', 'c']
fig, axes =plt.subplots(1,2)
for i,t in enumerate(names):
sns.boxplot( y=t, x= "a", data=df, orient='v',ax=axes[i % 2] )
P.S. @Fabian Schultz demande pourquoi ma solution devrait fonctionner. J'ai changé mon code comme ci-dessous
names = ['b', 'c']
fig, axes =plt.subplots(1,2)
sns.set_style("darkgrid")
flatui = [ "#95a5a6", "#34495e"]
for i,t in enumerate(names):
sns.boxplot( y=t, x= "a", data=df, orient='v',ax=axes[i % 2] , palette= flatui)
Cela marche. Ou peut-être que je ne comprends pas votre question