Back to Matplotlib

Documentation style guide

doc/devel/style_guide.rst

3.10.923.9 KB
Original Source

========================= Documentation style guide

This guide contains best practices for the language and formatting of Matplotlib documentation.

.. seealso::

For more information about contributing, see the :ref:`documenting-matplotlib`
section.

Expository language

For explanatory writing, the following guidelines are for clear and concise language use.

Terminology

There are several key terms in Matplotlib that are standards for reliability and consistency in documentation. They are not interchangeable.

.. table:: :widths: 15, 15, 35, 35

+------------------+--------------------------+--------------+--------------+ | Term | Description | Correct | Incorrect | +==================+==========================+==============+==============+ | |Figure| | Matplotlib working space | - For | - "The figure| | | for programming. | Matplotlib | is the | | | | objects: | working | | | | Figure, | space for | | | | "The Figure| visuals." | | | | is the | - "Methods in| | | | working | the figure | | | | space for | provide the| | | | the visual.| visuals." | | | | - Referring | - "The | | | | to class: | |Figure| | | | | |Figure|, | Four | | | | "Methods | leglock is | | | | within the | a wrestling| | | | |Figure| | move." | | | | provide the| | | | | visuals." | | | | | - General | | | | | language: | | | | | figure, | | | | | "Michelle | | | | | Kwan is a | | | | | famous | | | | | figure | | | | | skater." | | +------------------+--------------------------+--------------+--------------+ | |Axes| | Subplots within Figure. | - For | - "The axes | | | Contains plot elements | Matplotlib | methods | | | and is responsible for | objects: | transform | | | plotting and configuring | Axes, "An | the data." | | | additional details. | Axes is a | - "Each | | | | subplot | |Axes| is | | | | within the | specific to| | | | Figure." | a Figure." | | | | - Referring | - "The | | | | to class: | musicians | | | | |Axes|, | on stage | | | | "Each | call their | | | | |Axes| is | guitars | | | | specific to| Axes." | | | | one | - "The point | | | | Figure." | where the | | | | - General | Axes meet | | | | language: | is the | | | | axes, "Both| origin of | | | | loggers and| the | | | | lumberjacks| coordinate | | | | use axes to| system." | | | | chop wood."| | | | | OR "There | | | | | are no | | | | | standard | | | | | names for | | | | | the | | | | | coordinates| | | | | in the | | | | | three | | | | | axes." | | | | | (Plural of | | | | | axis) | | +------------------+--------------------------+--------------+--------------+ | |Artist| | Broad variety of | - For | - "Configure | | | Matplotlib objects that | Matplotlib | the legend | | | display visuals. | objects: | artist with| | | | Artist, | its | | | | "Artists | respective | | | | display | method." | | | | visuals and| - "There is | | | | are the | an | | | | visible | |Artist| | | | | elements | for that | | | | when | visual in | | | | rendering a| the graph."| | | | Figure." | - "Some | | | | - Referring | Artists | | | | to class: | became | | | | |Artist| , | famous only| | | | "Each | by | | | | |Artist| | accident." | | | | has | | | | | respective | | | | | methods and| | | | | functions."| | | | | - General | | | | | language: | | | | | artist, | | | | | "The | | | | | artist in | | | | | the museum | | | | | is from | | | | | France." | | +------------------+--------------------------+--------------+--------------+ | |Axis| | Human-readable single | - For | - "Plot the | | | dimensional object | Matplotlib | graph onto | | | of reference marks | objects: | the axis." | | | containing ticks, tick | Axis, "The | - "Each Axis | | | labels, spines, and | Axis for | is usually | | | edges. | the bar | named after| | | | chart is a | the | | | | separate | coordinate | | | | Artist." | which is | | | | (plural, | measured | | | | Axis | along it." | | | | objects) | - "In some | | | | - Referring | computer | | | | to class: | graphics | | | | |Axis|, | contexts, | | | | "The | the | | | | |Axis| | ordinate | | | | contains | |Axis| may | | | | respective | be oriented| | | | XAxis and | downwards."| | | | YAxis | | | | | objects." | | | | | - General | | | | | language: | | | | | axis, | | | | | "Rotation | | | | | around a | | | | | fixed axis | | | | | is a | | | | | special | | | | | case of | | | | | rotational | | | | | motion." | | +------------------+--------------------------+--------------+--------------+ | Axes interface | Usage pattern in which | - Axes | - explicit | | | one calls methods on | interface | interface | | | Axes and Figure (and | - call | - object | | | sometimes other Artist) | methods on | oriented | | | objects to configure the | the Axes / | - OO-style | | | plot. | Figure | - OOP | | | | object | | +------------------+--------------------------+--------------+--------------+ | pyplot interface | Usage pattern in which | - pyplot | - implicit | | | one only calls .pyplot | interface | interface | | | functions to configure | - call | - MATLAB like| | | the plot. | pyplot | - Pyplot | | | | functions | | +------------------+--------------------------+--------------+--------------+

.. |Figure| replace:: :class:~matplotlib.figure.Figure .. |Axes| replace:: :class:~matplotlib.axes.Axes .. |Artist| replace:: :class:~matplotlib.artist.Artist .. |Axis| replace:: :class:~matplotlib.axis.Axis

Grammar

Subject ^^^^^^^ Use second-person imperative sentences for directed instructions specifying an action. Second-person pronouns are for individual-specific contexts and possessive reference.

.. table:: :width: 100% :widths: 50, 50

+------------------------------------+------------------------------------+ | Correct | Incorrect | +====================================+====================================+ | Install Matplotlib from the source | You can install Matplotlib from the| | directory using the Python pip | source directory. You can find | | installer program. Depending on | additional support if you are | | your operating system, you may need| having trouble with your | | additional support. | installation. | +------------------------------------+------------------------------------+

Tense ^^^^^ Use present simple tense for explanations. Avoid future tense and other modal or auxiliary verbs when possible.

.. table:: :width: 100% :widths: 50, 50

+------------------------------------+------------------------------------+ | Correct | Incorrect | +====================================+====================================+ | The fundamental ideas behind | Matplotlib will take data and | | Matplotlib for visualization | transform it through functions and | | involve taking data and | methods. They can generate many | | transforming it through functions | kinds of visuals. These will be the| | and methods. | fundamentals for using Matplotlib. | +------------------------------------+------------------------------------+

Voice ^^^^^ Write in active sentences. Passive voice is best for situations or conditions related to warning prompts.

.. table:: :width: 100% :widths: 50, 50

+------------------------------------+------------------------------------+ | Correct | Incorrect | +====================================+====================================+ | The function plot generates the| The graph is generated by the | | graph. | plot function. | +------------------------------------+------------------------------------+ | An error message is returned by the| You will see an error message from | | function if there are no arguments.| the function if there are no | | | arguments. | +------------------------------------+------------------------------------+

Sentence structure ^^^^^^^^^^^^^^^^^^ Write with short sentences using Subject-Verb-Object order regularly. Limit coordinating conjunctions in sentences. Avoid pronoun references and subordinating conjunctive phrases.

.. table:: :width: 100% :widths: 50, 50

+------------------------------------+------------------------------------+ | Correct | Incorrect | +====================================+====================================+ | The pyplot module in Matplotlib| The pyplot module in Matplotlib| | is a collection of functions. These| is a collection of functions which | | functions create, manage, and | create, manage, and manipulate the | | manipulate the current Figure and | current Figure and plotting area. | | plotting area. | | +------------------------------------+------------------------------------+ | The plot function plots data | The plot function plots data | | to the respective Axes. The Axes | within its respective Axes for its | | corresponds to the respective | respective Figure. | | Figure. | | +------------------------------------+------------------------------------+ | The implicit approach is a | Users that wish to have convenient | | convenient shortcut for | shortcuts for generating plots use | | generating simple plots. | the implicit approach. | +------------------------------------+------------------------------------+

Formatting

The following guidelines specify how to incorporate code and use appropriate formatting for Matplotlib documentation.

Code

Matplotlib is a Python library and follows the same standards for documentation.

Comments ^^^^^^^^ Examples of Python code have comments before or on the same line.

.. table:: :width: 100% :widths: 50, 50

+---------------------------------------+---------------------------------+ | Correct | Incorrect | +=======================================+=================================+ | :: | :: | | | | | # Data | years = [2006, 2007, 2008] | | years = [2006, 2007, 2008] | # Data | +---------------------------------------+ | | :: | | | | | | years = [2006, 2007, 2008] # Data | | +---------------------------------------+---------------------------------+

Outputs ^^^^^^^ When generating visuals with Matplotlib using .py files in examples, display the visual with matplotlib.pyplot.show to display the visual. Keep the documentation clear of Python output lines.

.. table:: :width: 100% :widths: 50, 50

+------------------------------------+------------------------------------+ | Correct | Incorrect | +====================================+====================================+ | :: | :: | | | | | plt.plot([1, 2, 3], [1, 2, 3]) | plt.plot([1, 2, 3], [1, 2, 3]) | | plt.show() | | +------------------------------------+------------------------------------+ | :: | :: | | | | | fig, ax = plt.subplots() | fig, ax = plt.subplots() | | ax.plot([1, 2, 3], [1, 2, 3]) | ax.plot([1, 2, 3], [1, 2, 3]) | | fig.show() | | +------------------------------------+------------------------------------+

reStructuredText

Matplotlib uses reStructuredText Markup for documentation. Sphinx helps to transform these documents into appropriate formats for accessibility and visibility.

  • reStructuredText Specifications <https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html>_
  • Quick Reference Document <https://docutils.sourceforge.io/docs/user/rst/quickref.html>_

Lists ^^^^^ Bulleted lists are for items that do not require sequencing. Numbered lists are exclusively for performing actions in a determined order.

.. table:: :width: 100% :widths: 50, 50

+------------------------------------+------------------------------------+ | Correct | Incorrect | +====================================+====================================+ | The example uses three graphs. | The example uses three graphs. | +------------------------------------+------------------------------------+ | - Bar | 1. Bar | | - Line | 2. Line | | - Pie | 3. Pie | +------------------------------------+------------------------------------+ | These four steps help to get | The following steps are important | | started using Matplotlib. | to get started using Matplotlib. | +------------------------------------+------------------------------------+ | 1. Import the Matplotlib library. | - Import the Matplotlib library. | | 2. Import the necessary modules. | - Import the necessary modules. | | 3. Set and assign data to work on.| - Set and assign data to work on. | | 4. Transform data with methods and| - Transform data with methods and | | functions. | functions. | +------------------------------------+------------------------------------+

Tables ^^^^^^ Use ASCII tables with reStructuredText standards in organizing content. Markdown tables and the csv-table directive are not accepted.

.. table:: :width: 100% :widths: 50, 50

+--------------------------------+----------------------------------------+ | Correct | Incorrect | +================================+========================================+ | +----------+----------+ | :: | | | Correct | Incorrect| | | | +==========+==========+ | | Correct | Incorrect | | | | OK | Not OK | | | ------- | --------- | | | +----------+----------+ | | OK | Not OK | | | | | +--------------------------------+----------------------------------------+ | :: | :: | | | | | +----------+----------+ | .. csv-table:: | | | Correct | Incorrect| | :header: "correct", "incorrect" | | +==========+==========+ | :widths: 10, 10 | | | OK | Not OK | | | | +----------+----------+ | "OK ", "Not OK" | | | | +--------------------------------+ | | :: | | | | | | =========== =========== | | | Correct Incorrect | | | =========== =========== | | | OK Not OK | | | =========== =========== | | | | | +--------------------------------+----------------------------------------+

Additional resources

This style guide is not a comprehensive standard. For a more thorough reference of how to contribute to documentation, see the links below. These resources contain common best practices for writing documentation.

  • Python Developer's Guide <https://devguide.python.org/documenting/#documenting-python>_
  • Google Developer Style Guide <https://developers.google.com/style>_
  • IBM Style Guide <https://www.oreilly.com/library/view/the-ibm-style/9780132118989/>_
  • Red Hat Style Guide <https://stylepedia.net/style/#grammar>_