Ctrl+K
Logo image Logo image
  • Plot types
  • Examples
  • Tutorials
  • API Reference
  • Users guide
  • Contributing
  • Plot types
  • Examples
  • Tutorials
  • Reference
  • User guide
  • Develop
  • Release notes

Section Navigation

  • Contributing
  • Bug triaging and issue curation
  • Setting up Matplotlib for development
  • Testing
  • Writing documentation
  • Documentation style guide
  • Working with Matplotlib source code
    • Introduction
    • Install git
    • Following the latest source
    • Making a patch
    • Git for development
    • Making your own copy (fork) of Matplotlib
    • Set up your fork
    • Configure git
    • Development workflow
    • Maintainer workflow
    • git resources
    • Two and three dots in difference specs
  • Pull request guidelines
  • Release guide
  • Dependencies
  • Minimum version of dependencies policy
  • Matplotlib Enhancement Proposals
    • MEP Template
    • MEP8: PEP8
    • MEP9: Global interaction manager
    • MEP10: Docstring consistency
    • MEP11: Third-party dependencies
    • MEP12: Improve Gallery and Examples
    • MEP13: Use properties for Artists
    • MEP14: Text handling
    • MEP15: Fix axis autoscaling when limits are specified for one axis only
    • MEP19: Continuous Integration
    • MEP21: color and cm refactor
    • MEP22: Toolbar rewrite
    • MEP23: Multiple Figures per GUI window
    • MEP24: Negative radius in polar plots
    • MEP25: Serialization
    • MEP26: Artist styling
    • MEP27: Decouple pyplot from backends
    • MEP28: Remove Complexity from Axes.boxplot
    • MEP29: Text light markup
  • Licenses
  • Default color changes
  • Contributing
  • Bug triaging and issue curation
  • Setting up Matplotlib for development
  • Testing
  • Writing documentation
  • Documentation style guide
  • Working with Matplotlib source code
  • Pull request guidelines
  • Release guide
  • Dependencies
  • Minimum version of dependencies policy
  • Matplotlib Enhancement Proposals

MEP12: Improve Gallery and Examples#

  • Status

  • Branches and Pull requests

  • Abstract

  • Detailed description

  • Implementation

    • Gallery sections

    • Clean up guidelines

      • Additional suggestions

  • Backward compatibility

  • Alternatives

    • Tags

Status#

Progress

Initial changes added in 1.3. Conversion of the gallery is on-going. 29 September 2015 - The last pylab_examples where pylab is imported has been converted over to use matplotlib.pyplot and numpy.

Branches and Pull requests#

#1623, #1924, #2181

PR #2474 demonstrates a single example being cleaned up and moved to the appropriate section.

Abstract#

Reorganizing the matplotlib plot gallery would greatly simplify navigation of the gallery. In addition, examples should be cleaned-up and simplified for clarity.

Detailed description#

The matplotlib gallery was recently set up to split examples up into sections. As discussed in that PR [1], the current example sections (api, pylab_examples) aren't terribly useful to users: New sections in the gallery would help users find relevant examples.

These sections would also guide a cleanup of the examples: Initially, all the current examples would remain and be listed under their current directories. Over time, these examples could be cleaned up and moved into one of the new sections.

This process allows users to easily identify examples that need to be cleaned up; i.e. anything in the api and pylab_examples directories.

Implementation#

  1. Create new gallery sections. [Done]

  2. Clean up examples and move them to the new gallery sections (over the course of many PRs and with the help of many users/developers). [In progress]

Gallery sections#

The naming of sections is critical and will guide the clean-up effort. The current sections are:

  • Lines, bars, and markers (more-or-less 1D data)

  • Shapes and collections

  • Statistical plots

  • Images, contours, and fields

  • Pie and polar charts: Round things

  • Color

  • Text, labels, and annotations

  • Ticks and spines

  • Subplots, axes, and figures

  • Specialty plots (e.g., sankey, radar, tornado)

  • Showcase (plots with tweaks to make them publication-quality)

  • separate sections for toolboxes (already exists: 'mplot3d', 'axes_grid', 'units', 'widgets')

These names are certainly up for debate. As these sections grow, we should reevaluate them and split them up as necessary.

Clean up guidelines#

The current examples in the api and pylab_examples sections of the gallery would remain in those directories until they are cleaned up. After clean-up, they would be moved to one of the new gallery sections described above. "Clean-up" should involve:

  • sphinx-gallery docstrings: a title and a description of the example formatted as follows, at the top of the example:

    """
    ===============================
    Colormaps alter your perception
    ===============================
    
    Here I plot the function
    
    .. math:: f(x, y) = \sin(x) + \cos(y)
    
    with different colormaps. Look at how colormaps alter your perception!
    """
    
  • PEP8 clean-ups (running flake8, or a similar checker, is highly recommended)

  • Commented-out code should be removed.

  • Replace uses of pylab interface with pyplot (+ numpy, etc.). See c25ef1e

  • Remove shebang line, e.g.:

    #!/usr/bin/env python

  • Use consistent imports. In particular:

    import numpy as np

    import matplotlib.pyplot as plt

    Avoid importing specific functions from these modules (e.g. from numpy import sin)

  • Each example should focus on a specific feature (excluding showcase examples, which will show more "polished" plots). Tweaking unrelated to that feature should be removed. See f7b2217, e57b5fc, and 1458aa8

Use of pylab should be demonstrated/discussed on a dedicated help page instead of the gallery examples.

Note: When moving an existing example, you should search for references to that example. For example, the API documentation for axes.py and pyplot.py may use these examples to generate plots. Use your favorite search tool (e.g., grep, ack, grin, pss) to search the matplotlib package. See 2dc9a46 and aa6b410

Additional suggestions#

  • Provide links (both ways) between examples and API docs for the methods/objects used. (issue #2222)

  • Use plt.subplots (note trailing "s") in preference over plt.subplot.

  • Rename the example to clarify it's purpose. For example, the most basic demo of imshow might be imshow_demo.py, and one demonstrating different interpolation settings would be imshow_demo_interpolation.py (not imshow_demo2.py).

  • Split up examples that try to do too much. See 5099675 and fc2ab07

  • Delete examples that don't show anything new.

  • Some examples exercise esoteric features for unit testing. These tweaks should be moved out of the gallery to an example in the unit directory located in the root directory of the package.

  • Add plot titles to clarify intent of the example. See bd2b13c

Backward compatibility#

The website for each Matplotlib version is readily accessible, so users who want to refer to old examples can still do so.

Alternatives#

Tags#

Tagging examples will also help users search the example gallery. Although tags would be a big win for users with specific goals, the plot gallery will remain the entry point to these examples, and sections could really help users navigate the gallery. Thus, tags are complementary to this reorganization.

[1]

https://github.com/matplotlib/matplotlib/pull/714

On this page
  • Status
  • Branches and Pull requests
  • Abstract
  • Detailed description
  • Implementation
    • Gallery sections
    • Clean up guidelines
      • Additional suggestions
  • Backward compatibility
  • Alternatives
    • Tags
Show Source

© Copyright 2002–2012 John Hunter, Darren Dale, Eric Firing, Michael Droettboom and the Matplotlib development team; 2012–2022 The Matplotlib development team.

Created using Sphinx 5.1.1.