@@ -464,17 +464,43 @@ pyplot::
464
464
Use :func: `~matplotlib.pyplot.show `
465
465
------------------------------------------
466
466
467
- The user interface backends need to start the GUI mainloop, and this
468
- is what :func: `~matplotlib.pyplot.show ` does. It tells matplotlib to
469
- raise all of the figure windows and start the mainloop. Because the
470
- mainloop is blocking, you should only call this once per script, at
471
- the end. If you are using matplotlib to generate images only and do
472
- not want a user interface window, you do not need to call ``show `` (see
473
- :ref: `howto-batch ` and :ref: `what-is-a-backend `).
467
+ When you want to view your plots on your display,
468
+ the user interface backend will need to start the GUI mainloop.
469
+ This is what :func: `~matplotlib.pyplot.show ` does. It tells
470
+ matplotlib to raise all of the figure windows created so far and start
471
+ the mainloop. Because this mainloop is blocking (i.e., script execution is
472
+ paused), you should only call this once per script, at the end. Script
473
+ execution is resumed after the last window is closed. Therefore, if you are
474
+ using matplotlib to generate only images and do not want a user interface
475
+ window, you do not need to call ``show `` (see :ref: `howto-batch ` and
476
+ :ref: `what-is-a-backend `).
474
477
478
+ .. note ::
479
+ Because closing a figure window invokes the destruction of its plotting
480
+ elements, you should call :func: `~matplotlib.pyplot.savefig ` *before *
481
+ calling ``show `` if you wish to save the figure as well as view it.
482
+
483
+ .. versionadded :: v1.0.0
484
+ ``show `` now starts the GUI mainloop only if it isn't already running.
485
+ Therefore, multiple calls to ``show `` are now allowed.
475
486
476
- Because it is expensive to draw, matplotlib does not want redraw the figure
477
- many times in a script such as the following::
487
+ Having ``show `` block further execution of the script or the python
488
+ interperator depends on whether matplotlib is set for interactive mode
489
+ or not. In non-interactive mode (the default setting), execution is paused
490
+ until the last figure window is closed. In interactive mode, the execution
491
+ is not paused, which allows you to create additional figures (but the script
492
+ won't finish until the last figure window is closed).
493
+
494
+ .. note ::
495
+ Support for interactive/non-interactive mode depends upon the backend.
496
+ Until version 1.0.0 (and subsequent fixes for 1.0.1), the behavior of
497
+ the interactive mode was not consistent across backends.
498
+ As of v1.0.1, only the macosx backend differs from other backends
499
+ because it does not support non-interactive mode.
500
+
501
+
502
+ Because it is expensive to draw, you typically will not want matplotlib
503
+ to redraw a figure many times in a script such as the following::
478
504
479
505
plot([1,2,3]) # draw here ?
480
506
xlabel('time') # and here ?
@@ -483,24 +509,24 @@ many times in a script such as the following::
483
509
show()
484
510
485
511
486
- It is *possible * to force matplotlib to draw after every command,
512
+ However, it is *possible * to force matplotlib to draw after every command,
487
513
which might be what you want when working interactively at the
488
514
python console (see :ref: `mpl-shell `), but in a script you want to
489
- defer all drawing until the script has executed . This is especially
515
+ defer all drawing until the call to `` show `` . This is especially
490
516
important for complex figures that take some time to draw.
491
517
:func: `~matplotlib.pyplot.show ` is designed to tell matplotlib that
492
518
you're all done issuing commands and you want to draw the figure now.
493
519
494
520
.. note ::
495
521
496
- :func: `~matplotlib.pyplot.show ` should be called at most once per
497
- script and it should be the last line of your script. At that
498
- point, the GUI takes control of the interpreter. If you want to
499
- force a figure draw, use :func: `~matplotlib.pyplot.draw ` instead.
522
+ :func: `~matplotlib.pyplot.show ` should typically only be called
523
+ at most once per script and it should be the last line of your script.
524
+ At that point, the GUI takes control of the interpreter. If you want
525
+ to force a figure draw, use :func: `~matplotlib.pyplot.draw ` instead.
500
526
501
- Many users are frustrated by show because they want it to be a
502
- blocking call that raises the figure, pauses the script until the
503
- figure is closed , and then allows the script to continue running until
527
+ Many users are frustrated by `` show `` because they want it to be a
528
+ blocking call that raises the figure, pauses the script until they
529
+ close the figure , and then allow the script to continue running until
504
530
the next figure is created and the next show is made. Something like
505
531
this::
506
532
@@ -511,7 +537,13 @@ this::
511
537
512
538
This is not what show does and unfortunately, because doing blocking
513
539
calls across user interfaces can be tricky, is currently unsupported,
514
- though we have made some progress towards supporting blocking events.
540
+ though we have made significant progress towards supporting blocking events.
541
+
542
+ .. versionadded :: v1.0.0
543
+ As noted earlier, this restriction has been relaxed to allow multiple
544
+ calls to ``show ``. In *most * backends, you can now expect to be
545
+ able to create new figures and raise them in a subsequent call to
546
+ ``show `` after closing the figures from a previous call to ``show ``.
515
547
516
548
517
549
.. _howto-contribute :
0 commit comments