How can I display text over columns in a bar chart in matplotlib?

Question:

I have a bar chart and I want over each column to display some text,how can I do that ?

Asked By: IordanouGiannis

||

Answers:

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!

Answered By: cosmosis
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.