Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Side by Side BarPlot

I'm trying to create this kind of "side by side" barplot with seaborn and pandas.

enter image description here

this is how I create data frame:

dfs = pd.DataFrame(data={'investors': ['first','second','third'], 'stocks': [23, 123, 54], 'bonds': [54, 67, 123], 'real estate': [45, 243, 23]})

And here is barplot code:

sns.factorplot(x='investors', y='bonds', data=dfs, kind='bar')

Can anyone please help? Thanks

like image 676
Vladimir Chernenko Avatar asked May 18 '26 22:05

Vladimir Chernenko


1 Answers

Use melt on your dateframe then plot it with seaborn.

update: factorplot was changed to catplot in newer versions of seaborn.

sns.catplot(x = 'investors', y='value', 
            hue = 'investments',data=dfs1, 
            kind='bar')

# import libraries
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

dfs = pd.DataFrame(data={'investors': ['first','second','third'], 
                         'stocks': [23, 123, 54], 
                         'bonds': [54, 67, 123], 
                         'real estate': [45, 243, 23]})

dfs1 = pd.melt(dfs, id_vars = "investors")
dfs1 = dfs1.rename(columns={"variable": "investments"})

print(dfs1)

    investors    investments    value
0   first         stocks         23
1   second        stocks        123
2   third         stocks         54
3   first          bonds         54
4   second         bonds         67
5   third          bonds        123
6   first      real estate       45
7   second     real estate      243
8   third      real estate       23


sns.factorplot(x = 'investors', y='value', 
               hue = 'investments',data=dfs1, kind='bar')
plt.show()

output :-

barplot

like image 159
Abhi Avatar answered May 21 '26 11:05

Abhi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!