title: FigureCanvasAgg' object has no attribute 'invalidate' ? python plotting
body: <p>I've been following 'python for data analysis'. On pg. 345, you get to this code to plot returns across a variety of stocks. However, the plotting function does not work for me. I get 
  FigureCanvasAgg' object has no attribute 'invalidate' ?</p>
  
  <pre><code>names = ['AAPL','MSFT', 'DELL', 'MS', 'BAC', 'C'] #goog and SF did not work
  def get_px(stock, start, end):
      return web.get_data_yahoo(stock, start, end)['Adj Close']
  px = pd.DataFrame({n: get_px(n, '1/1/2009', '6/1/2012') for n in names})
  
  #fillna method pad uses last valid observation to fill
  px = px.asfreq('B').fillna(method='pad')
  rets = px.pct_change()
  df2 = ((1 + rets).cumprod() - 1)
  
  df2.ix[0] = 1
  
  df2.plot()
  </code></pre>
  
  <p>UPDATE: full traceback</p>
  
  <pre><code>---------------------------------------------------------------------------
  AttributeError                            Traceback (most recent call last)
  &lt;ipython-input-122-df192c0432be&gt; in &lt;module&gt;()
        6 df2.ix[0] = 1
        7 
  ----&gt; 8 df2.plot()
  
  //anaconda/lib/python2.7/site-packages/pandas/tools/plotting.pyc in plot_frame(frame, x, y, subplots, sharex, sharey, use_index, figsize, grid, legend, rot, ax, style, title, xlim, ylim, logx, logy, xticks, yticks, kind, sort_columns, fontsize, secondary_y, **kwds)
     1634                      logy=logy, sort_columns=sort_columns,
     1635                      secondary_y=secondary_y, **kwds)
  -&gt; 1636     plot_obj.generate()
     1637     plot_obj.draw()
     1638     if subplots:
  
  //anaconda/lib/python2.7/site-packages/pandas/tools/plotting.pyc in generate(self)
      854         self._compute_plot_data()
      855         self._setup_subplots()
  --&gt; 856         self._make_plot()
      857         self._post_plot_logic()
      858         self._adorn_subplots()
  
  //anaconda/lib/python2.7/site-packages/pandas/tools/plotting.pyc in _make_plot(self)
     1238         if not self.x_compat and self.use_index and self._use_dynamic_x():
     1239             data = self._maybe_convert_index(self.data)
  -&gt; 1240             self._make_ts_plot(data, **self.kwds)
     1241         else:
     1242             lines = []
  
  //anaconda/lib/python2.7/site-packages/pandas/tools/plotting.pyc in _make_ts_plot(self, data, **kwargs)
     1319                 self._maybe_add_color(colors, kwds, style, i)
     1320 
  -&gt; 1321                 _plot(data[col], i, ax, label, style, **kwds)
     1322 
     1323         self._make_legend(lines, labels)
  
  //anaconda/lib/python2.7/site-packages/pandas/tools/plotting.pyc in _plot(data, col_num, ax, label, style, **kwds)
     1293         def _plot(data, col_num, ax, label, style, **kwds):
     1294             newlines = tsplot(data, plotf, ax=ax, label=label,
  -&gt; 1295                                 style=style, **kwds)
     1296             ax.grid(self.grid)
     1297             lines.append(newlines[0])
  
  //anaconda/lib/python2.7/site-packages/pandas/tseries/plotting.pyc in tsplot(series, plotf, **kwargs)
       79 
       80     # set date formatter, locators and rescale limits
  ---&gt; 81     format_dateaxis(ax, ax.freq)
       82     left, right = _get_xlim(ax.get_lines())
       83     ax.set_xlim(left, right)
  
  //anaconda/lib/python2.7/site-packages/pandas/tseries/plotting.pyc in format_dateaxis(subplot, freq)
      258     subplot.xaxis.set_major_formatter(majformatter)
      259     subplot.xaxis.set_minor_formatter(minformatter)
  --&gt; 260     pylab.draw_if_interactive()
  
  //anaconda/lib/python2.7/site-packages/IPython/utils/decorators.pyc in wrapper(*args, **kw)
       41     def wrapper(*args,**kw):
       42         wrapper.called = False
  ---&gt; 43         out = func(*args,**kw)
       44         wrapper.called = True
       45         return out
  
  //anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.pyc in draw_if_interactive()
      227         figManager =  Gcf.get_active()
      228         if figManager is not None:
  --&gt; 229             figManager.canvas.invalidate()
      230 
      231 
  
  AttributeError: 'FigureCanvasAgg' object has no attribute 'invalidate'
  </code></pre>