title: Python matplotlib restrict to integer tick locations
body: <p>Quite often I want to make a bar chart of counts. If the counts are low I often get major and/or minor tick locations that are not integers. How can I prevent this? It makes no sense to have a tick at 1.5 when the data are counts.</p>
  
  <p>This is my first attempt:</p>
  
  <pre><code>import pylab
  pylab.figure()
  ax = pylab.subplot(2, 2, 1)
  pylab.bar(range(1,4), range(1,4), align='center')
  major_tick_locs = ax.yaxis.get_majorticklocs()
  if len(major_tick_locs) &lt; 2 or major_tick_locs[1] - major_tick_locs[0] &lt; 1:
      ax.yaxis.set_major_locator(pylab.MultipleLocator(1))
  minor_tick_locs = ax.yaxis.get_minorticklocs()
  if len(minor_tick_locs) &lt; 2 or minor_tick_locs[1] - minor_tick_locs[0] &lt; 1:
      ax.yaxis.set_minor_locator(pylab.MultipleLocator(1))
  </code></pre>
  
  <p>which works OK when the counts are small but when they are large, I get many many minor ticks:</p>
  
  <pre><code>import pylab
  ax = pylab.subplot(2, 2, 2)
  pylab.bar(range(1,4), range(100,400,100), align='center')
  major_tick_locs = ax.yaxis.get_majorticklocs()
  if len(major_tick_locs) &lt; 2 or major_tick_locs[1] - major_tick_locs[0] &lt; 1:
      ax.yaxis.set_major_locator(pylab.MultipleLocator(1))
  minor_tick_locs = ax.yaxis.get_minorticklocs()
  if len(minor_tick_locs) &lt; 2 or minor_tick_locs[1] - minor_tick_locs[0] &lt; 1:
      ax.yaxis.set_minor_locator(pylab.MultipleLocator(1))
  </code></pre>
  
  <p>How can I get the desired behaviour from the first example with small counts whilst avoiding what happens in the second?</p>