Reputation: 613
Dataset:
Code to plot:
import numpy as np
import matplotlib.pyplot as plt
# data to plot
n_groups = 6
GreenTaxi = pivot_df['GreenTaxi'].tolist()
YellowTaxi = pivot_df['YellowTaxi'].tolist()
Uber = pivot_df['Uber'].tolist()
# create plot
fig, ax = plt.subplots()
index = np.arange(n_groups)
bar_width = 0.35
opacity = 0.8
rects1 = plt.bar(index, GreenTaxi, bar_width,
alpha=opacity,
color='b',
label='GreenTaxi')
rects2 = plt.bar(index + bar_width, YellowTaxi, bar_width,
alpha=opacity,
color='g',
label='YellowTaxi')
rects3 = plt.bar(index + bar_width, Uber, bar_width,
alpha=opacity,
color='r',
label='Uber')
plt.xlabel('Month')
plt.ylabel('Ride Counts')
plt.title('Rides By Month')
plt.figure(figsize=(5,5))
plt.xticks(index + bar_width,pivot_df['MonthName'].tolist() )
plt.legend()
plt.show()
Output:
The green and red bar charts are overlapping and more over MonthName does not come in the x label ,only numerics are coming . Could you please advise on th eissue.
Upvotes: 1
Views: 1095
Reputation: 11367
import pandas as pd
import numpy as np
df=pd.DataFrame(10*np.random.rand(4,3),index=["Jan","Feb","March","April"],columns=["Uber","T1", "T2"])
df.plot(kind='bar',rot=0)
Upvotes: 1
Reputation: 862611
I think you can use DataFrame.plot.bar
, also first set_index
with column Names
and then change order of columns by subset []
:
bar_width = 0.35
opacity = 0.8
colors = ['b','g','r']
cols = ['GreenTaxi','YellowTaxi','Uber']
title = 'Rides By Month'
ylabel = "Ride Counts"
ax = pivot_df.set_index('MonthName')[cols].plot.bar(width=bar_width,
alpha=opacity,
figsize=(5,5),
color=colors,
title=title)
ax.set_ylabel(ylabel)
ax.legend(loc='best',prop={'size':10})
Upvotes: 0