df = pd.DataFrame({'value': np.random.random(5), 'label': ['Monday',
    'Tuesday', 'Wednesday', 'Thursday', 'Friday'], 'color': ['g', 'b', 'k',
    'y', 'm']})
fig, ax = plt.subplots()
for index, row in df.iterrows():
    ax.bar([index], [row['value']], color=row['color'], label=row['label'],
        alpha=0.5, align='center')
ax.legend(loc='best', frameon=False)
ax.margins(0.05)
ax.set_ylim(bottom=0)
ax.patch.set_facecolor('0.9')
matplotlib bar chart with data frame row names as legend