title: How do I re-draw only one set of axes on a figure in python?
body: <p>I have several plots in one figure using subplot. Each axes instance is used to refrence a specific set of axes. Like so:</p>
  
  <pre><code>ax[0] = fig.add_subplot(2, 2, 1)
  ax[1] = fig.add_subplot(2, 1, 2)
  ax[2] = fig.add_subplot(2, 2, 2,projection='3d')
  </code></pre>
  
  <p>As you can see, one of my sets of axes is a 3d plot. I make a change to one of the properties of the other plots like so:</p>
  
  <pre><code>plt.setp(zh, xdata=event.xdata,ydata=event.ydata)
  </code></pre>
  
  <p>and re-draw like so:</p>
  
  <pre><code>zh.figure.canvas.draw();
  </code></pre>
  
  <p>However, this is re-drawing the ENTIRE figure with all suplots, including the 3D projected one, which is slowing things down quite significantly.</p>
  
  <p>I've tried this:</p>
  
  <pre><code>ax[0].draw_artist(zh)
  </code></pre>
  
  <p>Which I thought had promise, but the axes isn't being updated. I'm not getting an error, it's just not re-drawing. I also tried:</p>
  
  <pre><code>zh.axes.draw(zh,ax[0])
  </code></pre>
  
  <p>but that gives the error:</p>
  
  <pre><code>AttributeError: 'Line2D' object has no attribute 'open_group'
  </code></pre>
  
  <p>Any ideas as to why this is happening, and how I can just re-draw the axes instance that I'm changing instead of the entire figure?</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>zh is a Line2D object:</p>
  
  <pre><code>zh, = plt.plot(z.real, z.imag, 'x', ms=10)
  </code></pre>