Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Seaborn: How to create a bar plot with 2 variables for each group?

Tags:

I have a dataframe like below. Using Python seeborn, how can I create a bar plot with day_of_week as x axis and for each day, have 2 bars to show both cr and clicks?

df=pd.DataFrame({u'clicks': {0: 19462,
  1: 11474,2: 32522,3: 16031,4: 12828,5: 7856,6: 11395},
 u'cr': {0: 0.0426,1: 0.0595,2: 0.0454,3: 0.0462,4: 0.0408,5: 0.0375,6: 0.0423},
 u'day_of_week': {0: u'Friday',1: u'Monday',2: u'Saturday',3: u'Sunday',
  4: u'Thursday',5: u'Tuesday',6: u'Wednesday'}})

Out[14]: 
   clicks      cr day_of_week
0   19462  0.0426      Friday
1   11474  0.0595      Monday
2   32522  0.0454    Saturday
3   16031  0.0462      Sunday
4   12828  0.0408    Thursday
5    7856  0.0375     Tuesday
6   11395  0.0423   Wednesday
like image 276
Allen Avatar asked Jun 01 '17 00:06

Allen


1 Answers

You can use matplotlib with Seaborn styles:

sns.set()

df=pd.DataFrame({u'clicks': {0: 19462,
  1: 11474,2: 32522,3: 16031,4: 12828,5: 7856,6: 11395},
 u'cr': {0: 0.0426,1: 0.0595,2: 0.0454,3: 0.0462,4: 0.0408,5: 0.0375,6: 0.0423},
 u'day_of_week': {0: u'Friday',1: u'Monday',2: u'Saturday',3: u'Sunday',
  4: u'Thursday',5: u'Tuesday',6: u'Wednesday'}})


df = df.set_index('day_of_week')

fig = plt.figure(figsize=(7,7)) # Create matplotlib figure

ax = fig.add_subplot(111) # Create matplotlib axes
ax2 = ax.twinx() # Create another axes that shares the same x-axis as a
width = .3

df.clicks.plot(kind='bar',color='green',ax=ax,width=width, position=0)
df.cr.plot(kind='bar',color='blue', ax=ax2,width = width,position=1)

ax.grid(None, axis=1)
ax2.grid(None)

ax.set_ylabel('clicks')
ax2.set_ylabel('c r')

ax.set_xlim(-1,7)

enter image description here

like image 128
Scott Boston Avatar answered Oct 11 '22 14:10

Scott Boston