Reputation: 79
I have this Dataframe:
OverallQual Foundation
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 BrkTil
8 PConc
8 PConc
8 CBlock
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 BrkTil
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 Wood
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 CBlock
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
8 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 CBlock
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
9 PConc
10 BrkTil
10 PConc
10 PConc
10 PConc
10 PConc
10 PConc
10 PConc
10 PConc
10 PConc
10 PConc
10 PConc
10 PConc
10 PConc
10 BrkTil
10 PConc
10 PConc
10 CBlock
10 PConc
And if I count the values of each Foundation
in every OverallQual
, it show the result like this:
OverallQual Foundation
8 BrkTil 2
CBlock 10
PConc 155
Wood 1
9 CBlock 1
PConc 42
10 BrkTil 2
CBlock 1
PConc 15
Name: count, dtype: int64
I want to produce a faceted grid of bar plots, one for each OverallQual
and then colour the bars according to the Foundation
column. I try to use FacetGrid
in this case. Here's my code
df_exerc_fg = sns.FacetGrid(df_exerc, col='OverallQual', hue='Foundation',palette='tab10')
df_exerc_fg.map(sns.barplot, 'Foundation', 'OverallQual')
But the result is not like what I expected. I think it's not plotting correctly.
But when I compared this with subplot in this code:
fig,ax = plt.subplots(1, 3, sharey=True, sharex=True, figsize=(15,5))
plt.suptitle(str.title('Material pondasi yang sering dipakai untuk grade 8-10'), fontsize=16)
ax[0].set_title('Overall = 8', fontsize=14)
sns.barplot(x = train_house['Foundation'].loc[train_house.OverallQual == 8].value_counts().index,
y = train_house['Foundation'].loc[train_house.OverallQual == 8].value_counts(),
hue = train_house['Foundation'].loc[train_house.OverallQual == 8].value_counts().index,
legend=False,
palette='tab10',
ax=ax[0])
ax[1].set_title('Overall = 9', fontsize=14)
sns.barplot(x = train_house['Foundation'].loc[train_house.OverallQual == 9].value_counts().index,
y = train_house['Foundation'].loc[train_house.OverallQual == 9].value_counts(),
hue = train_house['Foundation'].loc[train_house.OverallQual == 9].value_counts().index,
legend=False,
palette='tab10',
ax=ax[1])
ax[2].set_title('Overall = 10', fontsize=14)
sns.barplot(x = train_house['Foundation'].loc[train_house.OverallQual == 10].value_counts().index,
y = train_house['Foundation'].loc[train_house.OverallQual == 10].value_counts(),
hue = train_house['Foundation'].loc[train_house.OverallQual == 10].value_counts().index,
legend=False,
palette='tab10',
ax=ax[2])
plt.show()
It plot the data perfectly, like this.
The chart in FacetGrid is not plotting correctly. What am I missing in my code?
Upvotes: 0
Views: 33