Marine Multiple Fences

I have a pandas dataframe that looks like this:

class men woman children 0 first 0.91468 0.667971 0.660562 1 second 0.30012 0.329380 0.882608 2 third 0.11899 0.189747 0.121259 

How would I create a plot using a sea wolf that looks like this? Do I have to change my data somehow?


(source: mwaskom at stanford.edu )

+22
source share
2 answers

Yes, you need to change the shape of the DataFrame:

 df = pd.melt(df, id_vars="class", var_name="sex", value_name="survival rate") df Out: class sex survival rate 0 first men 0.914680 1 second men 0.300120 2 third men 0.118990 3 first woman 0.667971 4 second woman 0.329380 5 third woman 0.189747 6 first children 0.660562 7 second children 0.882608 8 third children 0.121259 

Now you can use factorplot (v0.8.1 or earlier):

 sns.factorplot(x='class', y='survival rate', hue='sex', data=df, kind='bar') 

enter image description here

For versions 0.9.0 or later, as Matthew noted in the comments , you need to use the renamed version, catplot .

 sns.catplot(x='class', y='survival rate', hue='sex', data=df, kind='bar') 
+42
source

I know that my answer came very late, but I hope that someone will benefit from this.

To solve the above, I used the code below after regrouping the data, of course:

Data:

 d = {'class': ['first', 'second', 'third', 'first', 'second', 'third', 'first', 'second', 'third'], 'sex': ['men', 'men', 'men', 'woman', 'woman', 'woman', 'children', 'children', 'children'], 'survival_rate':[0.914680, 0.300120, 0.118990, 0.667971, 0.329380, 0.189747, 0.660562, 0.882608, 0.121259]} df = pd.DataFrame(data=d) 

enter image description here

 sns.factorplot("sex", "survival_rate", col="class", data=df, kind="bar") 

enter image description here

+1
source

All Articles