Search code examples
pythonmatplotlibbar-chartx-axis

Individually labeled bars for bar graphs


I am trying to create bar graphs of letter frequency in Python. I thought the best way to accomplish this would be matplotlib, but I have been unable to decipher the documentation. Is it possible to label the bars of a matplotlib.pyplot.hist plot with one letter per bar, instead of a numerical axis? I think it must be, but I have not used matplotlib before.

This is the sort of graph I'm after, rendered as text:

|
|    *
|    *  *
| *  *  *
+----------
  A  B  C

Solution

  • Sure is! You just need to reset the tick labels.

    EDIT with answer and picture (can be done similarly with hist):

    x = scipy.arange(4)
    y = scipy.array([4,7,6,5])
    f = pylab.figure()
    ax = f.add_axes([0.1, 0.1, 0.8, 0.8])
    ax.bar(x, y, align='center')
    ax.set_xticks(x)
    ax.set_xticklabels(['Aye', 'Bee', 'Cee', 'Dee'])
    f.show()
    

    alt text
    (source: stevetjoa.com)