15

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
Trenton McKinney
  • 56,955
  • 33
  • 144
  • 158
josePhoenix
  • 538
  • 1
  • 5
  • 14

1 Answers1

34

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)

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Steve Tjoa
  • 59,122
  • 18
  • 90
  • 101
  • 5
    You don't need to use scipy for this by the way, you can replace the first two lines with `x = xrange(4)` and `y = [4,7,6,5]`. – m01 Mar 29 '13 at 12:16
  • 1
    Thank you for `align='center'`, I just spent an hour googling how to do that! – dotancohen Mar 20 '15 at 23:51