Issue
I'm trying to colour a bar chart with different colours, but when I pass a list of colours to the color
argument, it still colors all bars the same.
combi_df = pd.DataFrame(columns=['Labels', 'Number'])
label_list = ['one','two','three','four','five','six','seven','eight']
int_list = [302,11,73,10,68,36,42,30]
combi_df['Labels'] = label_list
combi_df['Number'] = int_list
fig = plt.figure()
ax = plt.subplot(111)
box = ax.get_position()
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height])
c = ['#1b9e77', '#a9f971', '#fdaa48','#6890F0','#A890F0','#fdaa48','#6890F0','#A890F0']
combi_df[['Number']].plot(kind='bar',color=c ,legend=True, fontsize=10,ax=ax)
ax.legend(ax.patches, combi_df['Labels'], loc='upper center',bbox_to_anchor=(0.75, 1))
ax.set_xlabel("Labels", fontsize=12)
ax.set_ylabel("Number of occurences", fontsize=12)
plt.show()
I have tried a number of things to make it work, including How to put colors in a matplotlib bar chart?, Setting Different Bar color in matplotlib Python [duplicate] and How to set Different Color(s) for Bars of Bar Plot in Matplotlib?
Solution
As commented, DataFrame.plot.bar
sets colors by column and you only have one column, so one possibility is to switch back to the vanilla pyplot.bar
.
If you still want to use a pandas plot, pivot your Labels
into columns:
combi_df.pivot(columns='Labels', values='Number').plot.bar(color=c, stacked=True, ax=ax)
Or make it horizontal and replace the legend with yticklabels
:
combi_df.pivot(columns='Labels', values='Number').plot.barh(color=c, stacked=True, legend=False, ax=ax)
ax.set_yticklabels(combi_df['Labels'])
Answered By - tdy
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.