I have a bar chart and I want over each column to display some text,how can I do that ?
text() will allow you to add text to your chart. It only enables you to add text to one set of coordinates at a time, so you'll need to loop through the data to add text for each bar. I added . 005 to the y-value so that the text would be placed above the bar.
Click the chart, and then click the Chart Design tab. Click Add Chart Element and select Data Labels, and then select a location for the data label option. Note: The options will differ depending on your chart type. If you want to show your data label inside a text bubble shape, click Data Callout.
bar(stacked=True) , or pandas. DataFrame. plot(kind='bar', stacked=True) , is the easiest way to plot a stacked bar plot. This method returns a matplotlib.
I believe this will point you in the right direction:
http://matplotlib.sourceforge.net/examples/pylab_examples/barchart_demo.html.
The part that you are most interested in is:
def autolabel(rects): for rect in rects: height = rect.get_height() plt.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%d'%int(height), ha='center', va='bottom')
The placement of the text is determined by the height function, or the height of the column, and the number that is put on top of each column is written by: '%d' %int(height). So all you need to do is create an array of strings, called 'name', that you want at the top of the columns and iterate through. Be sure to change the format to be for a string (%s) and not a double.
def autolabel(rects): # attach some text labels for ii,rect in enumerate(rects): height = rect.get_height() plt.text(rect.get_x()+rect.get_width()/2., 1.02*height, '%s'% (name[ii]), ha='center', va='bottom') autolabel(rects1)
That should do it!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With