title: What is the difference between Figure.show, Figure.canvas.draw, and Figure.canvas.draw_idle
body: <p>In Matplotlib, I can update the visual effect of the plot in a figure by calling the <code>Figure</code> object, say <code>fig</code> and calling the method <code>show</code> (<code>fig.show()</code>). But I also can do that by calling the <code>canvas</code> object in the figure and then calling method <code>draw</code> (<code>fig.canvas.draw()</code>).</p>
  <p>Example:</p>
  <pre><code>import matplotlib.pyplot as plt
  
  fig, axes = plt.subplots()
  axes.plot([1,2,3],[2,3,4])
  fig.show()
  axes.plot([1,2,3],[-2,23,14])
  fig.show()
  </code></pre>
  <p>and</p>
  <pre><code>import matplotlib.pyplot as plt
  
  fig, axes = plt.subplots()
  axes.plot([1,2,3],[2,3,4])
  fig.show()
  axes.plot([1,2,3],[-2,23,14])
  fig.canvas.draw()
  </code></pre>
  <p>I suspected the <code>fig.show</code> also performs <code>self.canvas.draw()</code> and some other things. But when I checked the code, I see only that it may call <code>self.canvas.draw_idle()</code>.</p>
  <p>What is the difference between <code>fig.show</code>, <code>fig.canvas.draw</code>, <code>fig.canvas.draw_idle</code>??</p>