title: Matplotlib set_major_formatter AttributeError
body: <p>I'm trying to format the yaxis on a matplotlib graph using set_major_formatter.  The plot is generated correctly, but the ax.yaxis.set_major_formatter() throws a couple of weird errors.</p>
  
  <p><strong>The formatter:</strong></p>
  
  <pre><code>def mjrFormatter(x):
      return "{0:.0f}%".format(x * 100)
  </code></pre>
  
  <p><strong>The code that uses the formatter:</strong></p>
  
  <pre><code> ...
   ax.yaxis.set_major_formatter(mjrFormatter)
   ...
  </code></pre>
  
  <p><strong>Error:</strong></p>
  
  <pre><code>---------------------------------------------------------------------------
  AttributeError                            Traceback (most recent call last)
  &lt;ipython-input-108-b436fe657a8b&gt; in &lt;module&gt;()
  ----&gt; 1 plot_func(data = data, figsize=(20,10), fig_title = 'title')
  
  &lt;ipython-input-107-d60ffc010a75&gt; in plot_percent_moc(data, figsize, fig_title)
       16         _ = data2[col].plot()
       17 
  ---&gt; 18     ax.yaxis.set_major_formatter(mjrFormatter)
       19 
       20     fig.suptitle(fig_title, fontsize = 14)
  
  C:\Python27\lib\site-packages\matplotlib\axis.pyc in set_major_formatter(self, formatter)
     1396         self.isDefault_majfmt = False
     1397         self.major.formatter = formatter
  -&gt; 1398         formatter.set_axis(self)
     1399 
     1400     def set_minor_formatter(self, formatter):
  
  AttributeError: 'function' object has no attribute 'set_axis'
  
  ---------------------------------------------------------------------------
  AttributeError                            Traceback (most recent call last)
  C:\Python27\lib\site-packages\IPython\zmq\pylab\backend_inline.pyc in show(close)
      100     try:
      101         for figure_manager in Gcf.get_all_fig_managers():
  --&gt; 102             send_figure(figure_manager.canvas.figure)
      103     finally:
      104         show._to_draw = []
  
  C:\Python27\lib\site-packages\IPython\zmq\pylab\backend_inline.pyc in send_figure(fig)
      209     """
      210     fmt = InlineBackend.instance().figure_format
  --&gt; 211     data = print_figure(fig, fmt)
      212     # print_figure will return None if there's nothing to draw:
      213     if data is None:
  
  C:\Python27\lib\site-packages\IPython\core\pylabtools.pyc in print_figure(fig, fmt)
      102     try:
      103         bytes_io = BytesIO()
  --&gt; 104         fig.canvas.print_figure(bytes_io, format=fmt, bbox_inches='tight')
      105         data = bytes_io.getvalue()
      106     finally:
  
  C:\Python27\lib\site-packages\matplotlib\backend_bases.pyc in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
     2050                     orientation=orientation,
     2051                     dryrun=True,
  -&gt; 2052                     **kwargs)
     2053                 renderer = self.figure._cachedRenderer
     2054                 bbox_inches = self.figure.get_tightbbox(renderer)
  
  C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.pyc in print_png(self, filename_or_obj, *args, **kwargs)
      489 
      490     def print_png(self, filename_or_obj, *args, **kwargs):
  --&gt; 491         FigureCanvasAgg.draw(self)
      492         renderer = self.get_renderer()
      493         original_dpi = renderer.dpi
  
  C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.pyc in draw(self)
      437 
      438         try:
  --&gt; 439             self.figure.draw(self.renderer)
      440         finally:
      441             RendererAgg.lock.release()
  
  C:\Python27\lib\site-packages\matplotlib\artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
       52     def draw_wrapper(artist, renderer, *args, **kwargs):
       53         before(artist, renderer)
  ---&gt; 54         draw(artist, renderer, *args, **kwargs)
       55         after(artist, renderer)
       56 
  
  C:\Python27\lib\site-packages\matplotlib\figure.pyc in draw(self, renderer)
      997         dsu.sort(key=itemgetter(0))
      998         for zorder, a, func, args in dsu:
  --&gt; 999             func(*args)
     1000 
     1001         renderer.close_group('figure')
  
  C:\Python27\lib\site-packages\matplotlib\artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
       52     def draw_wrapper(artist, renderer, *args, **kwargs):
       53         before(artist, renderer)
  ---&gt; 54         draw(artist, renderer, *args, **kwargs)
       55         after(artist, renderer)
       56 
  
  C:\Python27\lib\site-packages\matplotlib\axes.pyc in draw(self, renderer, inframe)
     2084 
     2085         for zorder, a in dsu:
  -&gt; 2086             a.draw(renderer)
     2087 
     2088         renderer.close_group('axes')
  
  C:\Python27\lib\site-packages\matplotlib\artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
       52     def draw_wrapper(artist, renderer, *args, **kwargs):
       53         before(artist, renderer)
  ---&gt; 54         draw(artist, renderer, *args, **kwargs)
       55         after(artist, renderer)
       56 
  
  C:\Python27\lib\site-packages\matplotlib\axis.pyc in draw(self, renderer, *args, **kwargs)
     1046         renderer.open_group(__name__)
     1047 
  -&gt; 1048         ticks_to_draw = self._update_ticks(renderer)
     1049         ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw,
     1050                                                                 renderer)
  
  C:\Python27\lib\site-packages\matplotlib\axis.pyc in _update_ticks(self, renderer)
      933 
      934         interval = self.get_view_interval()
  --&gt; 935         tick_tups = [t for t in self.iter_ticks()]
      936         if self._smart_bounds:
      937             # handle inverted limits
  
  C:\Python27\lib\site-packages\matplotlib\axis.pyc in iter_ticks(self)
      879         majorLocs = self.major.locator()
      880         majorTicks = self.get_major_ticks(len(majorLocs))
  --&gt; 881         self.major.formatter.set_locs(majorLocs)
      882         majorLabels = [self.major.formatter(val, i)
      883                        for i, val in enumerate(majorLocs)]
  
  AttributeError: 'function' object has no attribute 'set_locs'
  </code></pre>
  
  <p><strong>Am I doing something wrong or is this a bug?</strong></p>