From a727bdc56e5ef4c6c695a3643f0ec47dbd988478 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 29 Jun 2014 18:45:13 -0400 Subject: [PATCH 01/20] STY : minor rst formatting --- doc/faq/howto_faq.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/faq/howto_faq.rst b/doc/faq/howto_faq.rst index 9b391fb7aac5..4e70736f6b89 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/faq/howto_faq.rst @@ -11,7 +11,7 @@ How-To .. _howto-plotting: Plotting: howto -================= +=============== .. _howto-findobj: @@ -53,7 +53,7 @@ formatter. See :mod:`~matplotlib.ticker` for details. .. _howto-transparent: Save transparent figures ----------------------------------- +------------------------ The :meth:`~matplotlib.pyplot.savefig` command has a keyword argument *transparent* which, if 'True', will make the figure and axes @@ -113,7 +113,7 @@ Finally, the multipage pdf object has to be closed:: .. _howto-subplots-adjust: Move the edge of an axes to make room for tick labels ----------------------------------------------------------------------------- +----------------------------------------------------- For subplots, you can control the default spacing on the left, right, bottom, and top as well as the horizontal and vertical spacing between @@ -437,7 +437,7 @@ pyplot:: .. _howto-show: Use :func:`~matplotlib.pyplot.show` ------------------------------------------- +----------------------------------- When you want to view your plots on your display, the user interface backend will need to start the GUI mainloop. From 9e1c9cf74df96670de58c63ffa1d884eeabab812 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 29 Jun 2014 19:02:10 -0400 Subject: [PATCH 02/20] DOC : removed old movie example from FAQ --- doc/faq/howto_faq.rst | 47 ------------------------------------------- 1 file changed, 47 deletions(-) diff --git a/doc/faq/howto_faq.rst b/doc/faq/howto_faq.rst index 4e70736f6b89..f31b1b6ccb7f 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/faq/howto_faq.rst @@ -322,53 +322,6 @@ some ratio which controls the ratio:: See :ref:`pylab_examples-equal_aspect_ratio` for a complete example. -.. _howto-movie: - -Make a movie ------------- - -If you want to take an animated plot and turn it into a movie, the -best approach is to save a series of image files (eg PNG) and use an -external tool to convert them to a movie. You can use `mencoder -`_, -which is part of the `mplayer `_ suite -for this:: - - #fps (frames per second) controls the play speed - mencoder 'mf://*.png' -mf type=png:fps=10 -ovc \\ - lavc -lavcopts vcodec=wmv2 -oac copy -o animation.avi - -The swiss army knife of image tools, ImageMagick's `convert -`_ works for this as -well. - -Here is a simple example script that saves some PNGs, makes them into -a movie, and then cleans up:: - - import os, sys - import matplotlib.pyplot as plt - - files = [] - fig = plt.figure(figsize=(5,5)) - ax = fig.add_subplot(111) - for i in range(50): # 50 frames - ax.cla() - ax.imshow(rand(5,5), interpolation='nearest') - fname = '_tmp%03d.png'%i - print 'Saving frame', fname - fig.savefig(fname) - files.append(fname) - - print 'Making movie animation.mpg - this make take a while' - os.system("mencoder 'mf://_tmp*.png' -mf type=png:fps=10 \\ - -ovc lavc -lavcopts vcodec=wmv2 -oac copy -o animation.mpg") - -.. htmlonly:: - - Josh Lifton provided this example :ref:`old_animation-movie_demo`, which - is possibly dated since it was written in 2004. - - .. _howto-twoscale: Multiple y-axis scales From 5f60a1e75b031ab6b2de3a60913b134cd10504b8 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 29 Jun 2014 21:52:19 -0400 Subject: [PATCH 03/20] DOC : re-worked patch/bug report FAQ --- doc/faq/howto_faq.rst | 55 +++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/doc/faq/howto_faq.rst b/doc/faq/howto_faq.rst index f31b1b6ccb7f..885e13becbec 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/faq/howto_faq.rst @@ -482,36 +482,28 @@ Contributing: howto .. _how-to-submit-patch: -Submit a patch --------------- - -See :ref:`making-patches` for information on how to make a patch with git. - -If you are posting a patch to fix a code bug, please explain your -patch in words -- what was broken before and how you fixed it. Also, -even if your patch is particularly simple, just a few lines or a -single function replacement, we encourage people to submit git diffs -against HEAD of the branch they are patching. It just makes life -easier for us, since we (fortunately) get a lot of contributions, and -want to receive them in a standard format. If possible, for any -non-trivial change, please include a complete, free-standing example -that the developers can run unmodified which shows the undesired -behavior pre-patch and the desired behavior post-patch, with a clear -verbal description of what to look for. A developer may -have written the function you are working on years ago, and may no -longer be with the project, so it is quite possible you are the world -expert on the code you are patching and we want to hear as much detail -as you can offer. - -When emailing your patch and examples, feel free to paste any code -into the text of the message, indeed we encourage it, but also attach -the patches and examples since many email clients screw up the -formatting of plain text, and we spend lots of needless time trying to -reformat the code to make it usable. - -You should check out the guide to developing matplotlib to make sure -your patch abides by our coding conventions -:ref:`developers-guide-index`. +Reporting a bug or submitting a patch +------------------------------------- + +The development of matplotlib is organized through `github +`_. If you would like +to report a bug or submit a patch please use that interface. + +To report a bug (or request a feature) just `create an issue +`_ on github. +Please include a `Short, Self Contained, Correct (Compilable), Example +`_ demonstrating what is wrong. This makes it much +easier for the developers to evaluate the bug report and gives them a +start on where to start looking for the bug. The easier it is for the +developers to understand your problem the faster it will get fixed. +Expect that the bug reports will be a conversation. If you do not +want to register with github, please email bug reports to `the mailing +list `_. + + +The easiest way to submit patches to matplotlib is through pull +requests on github. Please see the :ref:`developers-guide-index` for +the details. .. _how-to-contribute-docs: @@ -558,7 +550,8 @@ your documents. Once your documentation contributions are working (and hopefully tested by actually *building* the docs) you can submit them as a patch against git. See :ref:`install-git` and :ref:`how-to-submit-patch`. -Looking for something to do? Search for `TODO <../search.html?q=todo>`_. +Looking for something to do? Search for `TODO <../search.html?q=todo>`_ +or look at the open issues on github. From 0c85dfed33632234070ae7178e28175db04e188b Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 29 Jun 2014 21:53:31 -0400 Subject: [PATCH 04/20] DOC : removed reference to making a flash backend --- doc/faq/howto_faq.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/faq/howto_faq.rst b/doc/faq/howto_faq.rst index 885e13becbec..e5a5f0bdabcf 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/faq/howto_faq.rst @@ -638,9 +638,8 @@ Andrew Dalke of `Dalke Scientific `_ has written a nice `article `_ on how to make html click maps with matplotlib agg PNGs. We would -also like to add this functionality to SVG and add a SWF backend to -support these kind of images. If you are interested in contributing -to these efforts that would be great. +also like to add this functionality to SVG. If you are interested in +contributing to these efforts that would be great. .. _how-to-search-examples: From 050f3af6e4231db51e3d8a26b60c2c5ffdaf6e9f Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 29 Jun 2014 23:17:44 -0400 Subject: [PATCH 05/20] DOC : minor tweaks to coding_guide - strengthen suggestion to use auto pep8 checker - added example minimal numpydoc docstring --- doc/devel/coding_guide.rst | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index 646f6d4c09d0..02c53ded717e 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -34,8 +34,9 @@ Style `_. Exceptions to these rules are acceptable if it makes the code objectively more readable. - - You may want to consider installing automatic PEP8 checking in - your editor. + - You should installing/enabling automatic PEP8 checking in your + editor. Part of the test suite in checking PEP8 compliance, things + go smoother if the code is mostly PEP8 compliant to begin with. * No tabs (only spaces). No trailing whitespace. @@ -63,7 +64,7 @@ Documentation ------------- * Every new feature should be documented. If it's a new module, don't - forget to add it to the API docs. + forget to add a new rst file to the API docs. * Docstrings should be in `numpydoc format `_. @@ -71,10 +72,35 @@ Documentation are not in that format. We are working to standardize on `numpydoc`. + Docstrings should look like (at a minimum):: + + def foo(bar, baz=None): + """ + This is a prose description of foo and all the great + things it does. + + Parameters + ---------- + bar : (type of bar) + A description of bar + + baz : (type of baz), optional + A description of baz + + Returns + ------- + foobar : (type of foobar) + A description of foobar + foobaz : (type of foobaz) + A description of foobaz + """ + # some very clever code + return foobar, foobaz + * Each high-level plotting function should have a simple example in - the `Example` section. This should be as simple as possible to - demonstrate the method. More complex examples should go in the - `examples` tree. + the `Example` section of the docstring. This should be as simple as + possible to demonstrate the method. More complex examples should go + in the `examples` tree. * Build the docs and make sure all formatting warnings are addressed. From 6cfccbfa10cc5f16f6093cbff61aa637469615bc Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 29 Jun 2014 23:19:15 -0400 Subject: [PATCH 06/20] DOC : minor changes to docs - formatting - tweaked suggested imports to make copy-paste easier - updated list of versions of python --- doc/devel/index.rst | 6 +++--- doc/devel/portable_code.rst | 7 ++++--- doc/devel/testing.rst | 13 ++++++++++--- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/doc/devel/index.rst b/doc/devel/index.rst index 47ad4fa7ba1c..5b3c01eebd5a 100644 --- a/doc/devel/index.rst +++ b/doc/devel/index.rst @@ -1,8 +1,8 @@ .. _developers-guide-index: -#################################### - The Matplotlib Developers' Guide -#################################### +################################ +The Matplotlib Developers' Guide +################################ .. htmlonly:: diff --git a/doc/devel/portable_code.rst b/doc/devel/portable_code.rst index dd1f9f3dd6cd..a557905fa6dc 100644 --- a/doc/devel/portable_code.rst +++ b/doc/devel/portable_code.rst @@ -14,16 +14,17 @@ Welcome to the ``__future__`` The top of every `.py` file should include the following:: - from __future__ import absolute_import, division, print_function, unicode_literals + from __future__ import (absolute_import, division, + print_function, unicode_literals) + import six This will make the Python 2 interpreter behave as close to Python 3 as possible. All matplotlib files should also import `six`, whether they are using it or not, just to make moving code between modules easier, as `six` -gets used *a lot*:: +gets used *a lot*. - import six Finding places to use six ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/devel/testing.rst b/doc/devel/testing.rst index 7d778041c68a..d5fe1a096be9 100644 --- a/doc/devel/testing.rst +++ b/doc/devel/testing.rst @@ -42,13 +42,20 @@ a colon, e.g., (this is assuming the test is installed):: python tests.py matplotlib.tests.test_simplification:test_clipping +If you want to run the full test suite, but want to save wall time try running the +tests in parallel:: + + python ../matplotlib/tests.py -sv --processes=5 --process-timeout=300 + +as we do on Travis.ci. + + An alternative implementation that does not look at command line arguments works from within Python:: import matplotlib matplotlib.test() - .. _`nosetest arguments`: http://somethingaboutorange.com/mrl/projects/nose/1.0.0/usage.html @@ -185,8 +192,8 @@ multiple Python environments, including multiple versions of Python (e.g., 2.6, 2.7, 3.2, etc.) and even different Python implementations altogether (e.g., CPython, PyPy, Jython, etc.) -Testing all 4 versions of Python (2.6, 2.7, 3.1, and 3.2) requires -having four versions of Python installed on your system and on the +Testing all versions of Python (2.6, 2.7, 3.*) requires +having multiple versions of Python installed on your system and on the PATH. Depending on your operating system, you may want to use your package manager (such as apt-get, yum or MacPorts) to do this, or use `pythonbrew `_. From 284135ef2866d54ea1bc0d6cbb64d7ff5f2bcdfc Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 29 Jun 2014 23:20:11 -0400 Subject: [PATCH 07/20] DOC : major work to development workflow docs - github PR as primary mode of communication close #2198 --- doc/devel/gitwash/branch_list.png | Bin 13361 -> 0 bytes doc/devel/gitwash/branch_list_compare.png | Bin 10679 -> 0 bytes doc/devel/gitwash/development_workflow.rst | 78 +++++++++------------ doc/devel/gitwash/forking_hell.rst | 4 +- doc/devel/gitwash/index.rst | 2 +- doc/devel/gitwash/patching.rst | 37 ---------- doc/devel/gitwash/pull_button.png | Bin 12893 -> 0 bytes 7 files changed, 35 insertions(+), 86 deletions(-) delete mode 100644 doc/devel/gitwash/branch_list.png delete mode 100644 doc/devel/gitwash/branch_list_compare.png delete mode 100644 doc/devel/gitwash/pull_button.png diff --git a/doc/devel/gitwash/branch_list.png b/doc/devel/gitwash/branch_list.png deleted file mode 100644 index 1196eb754d361dbb2e53a25745f913c2f0cdb83e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13361 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

_7R111LPD;|HP^UiQJ< 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 VTJiw>+XDn7B_=Og{lhTu{{jB^XlDQb diff --git a/doc/devel/gitwash/branch_list_compare.png b/doc/devel/gitwash/branch_list_compare.png deleted file mode 100644 index 336afa3746040f118c073e7d02a5843bc8eed152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10679 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 I#f$>~7cL{PD*ylh From d11fc1aede5e4641d48bbfd5ccc741d1a893d85f Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 2 Jul 2014 08:22:37 -0400 Subject: [PATCH 08/20] DOC : tweaked FAQ about new features --- doc/faq/howto_faq.rst | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/faq/howto_faq.rst b/doc/faq/howto_faq.rst index e5a5f0bdabcf..fb25f791f22a 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/faq/howto_faq.rst @@ -1,3 +1,4 @@ + .. _howto-faq: ****** @@ -489,7 +490,7 @@ The development of matplotlib is organized through `github `_. If you would like to report a bug or submit a patch please use that interface. -To report a bug (or request a feature) just `create an issue +To report a bug just `create an issue `_ on github. Please include a `Short, Self Contained, Correct (Compilable), Example `_ demonstrating what is wrong. This makes it much @@ -497,7 +498,7 @@ easier for the developers to evaluate the bug report and gives them a start on where to start looking for the bug. The easier it is for the developers to understand your problem the faster it will get fixed. Expect that the bug reports will be a conversation. If you do not -want to register with github, please email bug reports to `the mailing +want to register with github, please email bug reports to the `mailing list `_. @@ -505,6 +506,15 @@ The easiest way to submit patches to matplotlib is through pull requests on github. Please see the :ref:`developers-guide-index` for the details. +.. _how-to-request-feature: + +Request a new feature +--------------------- + +Is there a feature you wish matplotlib had? Then ask! The best +way to get started is to email the developer `mailing +list `_ for discussion. + .. _how-to-contribute-docs: From 9aa5f706bca6cf908e12d60d6bd70555bdbf06eb Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 3 Jul 2014 17:14:05 -0400 Subject: [PATCH 09/20] DOC : added figure part diagram Added map of major parts of a figure --- doc/faq/fig_map.png | Bin 0 -> 29660 bytes doc/faq/usage_faq.rst | 69 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 doc/faq/fig_map.png diff --git a/doc/faq/fig_map.png b/doc/faq/fig_map.png new file mode 100644 index 0000000000000000000000000000000000000000..8af3500399fd4f78b25c45cbb51569fd3f12d39e GIT binary patch literal 29660 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 Date: Thu, 3 Jul 2014 22:40:23 -0400 Subject: [PATCH 10/20] DOC : grammer fixes and doc edits - changed some wording --- doc/faq/howto_faq.rst | 19 +++++++++---------- doc/faq/usage_faq.rst | 1 + 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/faq/howto_faq.rst b/doc/faq/howto_faq.rst index fb25f791f22a..441c6ee7cb6b 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/faq/howto_faq.rst @@ -490,16 +490,15 @@ The development of matplotlib is organized through `github `_. If you would like to report a bug or submit a patch please use that interface. -To report a bug just `create an issue -`_ on github. -Please include a `Short, Self Contained, Correct (Compilable), Example -`_ demonstrating what is wrong. This makes it much -easier for the developers to evaluate the bug report and gives them a -start on where to start looking for the bug. The easier it is for the -developers to understand your problem the faster it will get fixed. -Expect that the bug reports will be a conversation. If you do not -want to register with github, please email bug reports to the `mailing -list `_. +To report a bug `create an issue +`_ on github +(this requires having a github account). Please include a `Short, +Self Contained, Correct (Compilable), Example `_ +demonstrating what the bug is. Including a clear, easy to test +example makes it easy for the developers to evaluate the bug. Expect +that the bug reports will be a conversation. If you do not want to +register with github, please email bug reports to the `mailing list +`_. The easiest way to submit patches to matplotlib is through pull diff --git a/doc/faq/usage_faq.rst b/doc/faq/usage_faq.rst index be76107803f2..24e0f577a3c6 100644 --- a/doc/faq/usage_faq.rst +++ b/doc/faq/usage_faq.rst @@ -246,6 +246,7 @@ which you would then use as:: fig, ax = plt.subplots(1, 1) my_plotter(ax, data1, data2, {'marker':'x'}) + or if you wanted to have 2 sub-plots:: fig, (ax1, ax2) = plt.subplots(1, 2) From 23a63dad9e9cba645704cae70cb655162e49d9c7 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 3 Jul 2014 22:45:00 -0400 Subject: [PATCH 11/20] DOC : minor punctuation change --- doc/devel/coding_guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index 02c53ded717e..c8e945cd81ca 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -69,7 +69,7 @@ Documentation * Docstrings should be in `numpydoc format `_. Don't be thrown off by the fact that many of the existing docstrings - are not in that format. We are working to standardize on + are not in that format; we are working to standardize on `numpydoc`. Docstrings should look like (at a minimum):: From b1f0a60029d82d973bf0cc1083d47adbe8281802 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 5 Jul 2014 21:54:49 -0400 Subject: [PATCH 12/20] DOC : removed reference to pylab on the front page --- doc/_templates/index.html | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/doc/_templates/index.html b/doc/_templates/index.html index 63894ab29370..8a6a41533d74 100644 --- a/doc/_templates/index.html +++ b/doc/_templates/index.html @@ -63,18 +63,12 @@

Introduction

For a sampling, see the screenshots, thumbnail gallery, and examples directory

-

For example, using "%pylab" in the IPython shell for - an interactive environment, to generate 10,000 gaussian random numbers - and plot a histogram with 100 bins, you simply need to - type

- -
-  x = randn(10000)
-  hist(x, 100)
- -

For the power user, you have full control of line styles, font - properties, axes properties, etc, via an object oriented interface - or via a set of functions familiar to MATLAB users.

+

For simple plotting the

pyplot
interface provide a + MATLAB-like interface, particularly when combined + with
IPython
. For the power user, you have full control + of line styles, font properties, axes properties, etc, via an object + oriented interface or via a set of functions familiar to MATLAB + users.

John Hunter (1968-2012)

@@ -124,7 +118,7 @@

Documentation

Other learning resources

-

There are many external learning +

There are many external learning resources available including printed material, videos and tutorials.

Need help?

From b21e34d2132c0e44340bdd494037417b687a1a8e Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 12 Jul 2014 10:56:38 -0400 Subject: [PATCH 13/20] DOC : minor edits --- doc/_templates/index.html | 2 +- doc/devel/coding_guide.rst | 2 +- doc/faq/howto_faq.rst | 23 +++++++++++++---------- doc/faq/usage_faq.rst | 4 ++-- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/doc/_templates/index.html b/doc/_templates/index.html index 8a6a41533d74..664e92fcf14e 100644 --- a/doc/_templates/index.html +++ b/doc/_templates/index.html @@ -63,7 +63,7 @@

Introduction

For a sampling, see the screenshots, thumbnail gallery, and examples directory

-

For simple plotting the

pyplot
interface provide a +

For simple plotting the

pyplot
interface provides a MATLAB-like interface, particularly when combined with
IPython
. For the power user, you have full control of line styles, font properties, axes properties, etc, via an object diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index c8e945cd81ca..8f2aee9a38da 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -34,7 +34,7 @@ Style `_. Exceptions to these rules are acceptable if it makes the code objectively more readable. - - You should installing/enabling automatic PEP8 checking in your + - You should consider installing/enabling automatic PEP8 checking in your editor. Part of the test suite in checking PEP8 compliance, things go smoother if the code is mostly PEP8 compliant to begin with. diff --git a/doc/faq/howto_faq.rst b/doc/faq/howto_faq.rst index 441c6ee7cb6b..983b2e5f840e 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/faq/howto_faq.rst @@ -481,6 +481,19 @@ though we have made significant progress towards supporting blocking events. Contributing: howto =================== +.. _how-to-request-feature: + +Request a new feature +--------------------- + +Is there a feature you wish matplotlib had? Then ask! The best +way to get started is to email the developer `mailing +list `_ for discussion. +This is an open source project developed primarily in the +contributors free time, so there is no guarantee that your +feature will be added. The *best* way to get the feature +you need added is to contribute it your self. + .. _how-to-submit-patch: Reporting a bug or submitting a patch @@ -505,16 +518,6 @@ The easiest way to submit patches to matplotlib is through pull requests on github. Please see the :ref:`developers-guide-index` for the details. -.. _how-to-request-feature: - -Request a new feature ---------------------- - -Is there a feature you wish matplotlib had? Then ask! The best -way to get started is to email the developer `mailing -list `_ for discussion. - - .. _how-to-contribute-docs: Contribute to matplotlib documentation diff --git a/doc/faq/usage_faq.rst b/doc/faq/usage_faq.rst index 24e0f577a3c6..232618918582 100644 --- a/doc/faq/usage_faq.rst +++ b/doc/faq/usage_faq.rst @@ -82,8 +82,8 @@ axes contains two (or three in the case of 3D) between **Axes** and **Axis**) which take care of the data limits (the data limits can also be controlled via set via the :func:`~matplotlib.axes.Axes.set_xlim` and -:func:`~matplotlib.axes.Axes.set_ylim` member :class:`Axes` member -functions). Each :class:`Axes` has a title (set via +:func:`~matplotlib.axes.Axes.set_ylim` :class:`Axes` methods). Each +:class:`Axes` has a title (set via :func:`~matplotlib.axes.Axes.set_title`), an x-label (set via :func:`~matplotlib.axes.Axes.set_xlabel`), and a y-label set via :func:`~matplotlib.axes.Axes.set_ylabel`). From 5b613d47776efc5a2c259f6537c6fd8d0fb06454 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 12 Jul 2014 17:14:04 -0400 Subject: [PATCH 14/20] DOC : killed tabs with fire --- doc/devel/coding_guide.rst | 45 +++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index 8f2aee9a38da..d042c7d694ce 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -74,28 +74,29 @@ Documentation Docstrings should look like (at a minimum):: - def foo(bar, baz=None): - """ - This is a prose description of foo and all the great - things it does. - - Parameters - ---------- - bar : (type of bar) - A description of bar - - baz : (type of baz), optional - A description of baz - - Returns - ------- - foobar : (type of foobar) - A description of foobar - foobaz : (type of foobaz) - A description of foobaz - """ - # some very clever code - return foobar, foobaz + def foo(bar, baz=None): + """ + This is a prose description of foo and all the great + things it does. + + Parameters + ---------- + bar : (type of bar) + A description of bar + + baz : (type of baz), optional + A description of baz + + Returns + ------- + foobar : (type of foobar) + A description of foobar + foobaz : (type of foobaz) + A description of foobaz + """ + # some very clever code + return foobar, foobaz + * Each high-level plotting function should have a simple example in the `Example` section of the docstring. This should be as simple as From ed65167d698da41f52cb40ba3f118db8595ce811 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 12 Jul 2014 17:20:14 -0400 Subject: [PATCH 15/20] DOC : changes to testing docs - removed reference to pythonbrew (which has been deprecated) - moved tox section to very end as the docs and the tox file are both very out of date. --- doc/devel/testing.rst | 62 +++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/doc/devel/testing.rst b/doc/devel/testing.rst index d5fe1a096be9..f29d7be30175 100644 --- a/doc/devel/testing.rst +++ b/doc/devel/testing.rst @@ -184,6 +184,36 @@ to add tests for it in ``matplotlib.tests.test_whizbang``. To add this module to the list of default tests, append its name to ``default_test_modules`` in :file:`lib/matplotlib/__init__.py`. +Using Travis CI +--------------- + +`Travis CI `_ is a hosted CI system "in the +cloud". + +Travis is configured to receive notifications of new commits to GitHub +repos (via GitHub "service hooks") and to run builds or tests when it +sees these new commits. It looks for a YAML file called +``.travis.yml`` in the root of the repository to see how to test the +project. + +Travis CI is already enabled for the `main matplotlib GitHub +repository `_ -- for +example, see `its Travis page +`_. + +If you want to enable Travis CI for your personal matplotlib GitHub +repo, simply enable the repo to use Travis CI in either the Travis CI +UI or the GitHub UI (Admin | Service Hooks). For details, see `the +Travis CI Getting Started page +`_. This +generally isn't necessary, since any pull request submitted against +the main matplotlib repository will be tested. + +Once this is configured, you can see the Travis CI results at +http://travis-ci.org/#!/your_GitHub_user_name/matplotlib -- here's `an +example `_. + + Using tox --------- @@ -195,8 +225,7 @@ altogether (e.g., CPython, PyPy, Jython, etc.) Testing all versions of Python (2.6, 2.7, 3.*) requires having multiple versions of Python installed on your system and on the PATH. Depending on your operating system, you may want to use your -package manager (such as apt-get, yum or MacPorts) to do this, or use -`pythonbrew `_. +package manager (such as apt-get, yum or MacPorts) to do this. tox makes it easy to determine if your working copy introduced any regressions before submitting a pull request. Here's how to use it: @@ -227,32 +256,3 @@ edit this file if you want to add new environments to test (e.g., tests are run. For more info on the ``tox.ini`` file, see the `Tox Configuration Specification `_. - -Using Travis CI ---------------- - -`Travis CI `_ is a hosted CI system "in the -cloud". - -Travis is configured to receive notifications of new commits to GitHub -repos (via GitHub "service hooks") and to run builds or tests when it -sees these new commits. It looks for a YAML file called -``.travis.yml`` in the root of the repository to see how to test the -project. - -Travis CI is already enabled for the `main matplotlib GitHub -repository `_ -- for -example, see `its Travis page -`_. - -If you want to enable Travis CI for your personal matplotlib GitHub -repo, simply enable the repo to use Travis CI in either the Travis CI -UI or the GitHub UI (Admin | Service Hooks). For details, see `the -Travis CI Getting Started page -`_. This -generally isn't necessary, since any pull request submitted against -the main matplotlib repository will be tested. - -Once this is configured, you can see the Travis CI results at -http://travis-ci.org/#!/your_GitHub_user_name/matplotlib -- here's `an -example `_. From 6d0503bfad059149fef4a5544ad9368714efc75c Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 12 Jul 2014 23:06:16 -0400 Subject: [PATCH 16/20] DOC : minor rst markup fix --- doc/faq/usage_faq.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/faq/usage_faq.rst b/doc/faq/usage_faq.rst index 232618918582..14927db226b8 100644 --- a/doc/faq/usage_faq.rst +++ b/doc/faq/usage_faq.rst @@ -55,7 +55,7 @@ Parts of a Figure :class:`~matplotlib.figure.Figure` ---------------------------------- -The _whole_ figure (marked as the outer red box). The figure keeps +The **whole** figure (marked as the outer red box). The figure keeps track of all the child :class:`~matplotlib.axes.Axes`, a smattering of 'special' artists (titles, figure legends, etc), and the **canvas**. (Don't worry too much about the canvas, it is crucial as it is the @@ -81,12 +81,12 @@ axes contains two (or three in the case of 3D) :class:`~matplotlib.axis.Axis` objects (be aware of the difference between **Axes** and **Axis**) which take care of the data limits (the data limits can also be controlled via set via the -:func:`~matplotlib.axes.Axes.set_xlim` and -:func:`~matplotlib.axes.Axes.set_ylim` :class:`Axes` methods). Each +:meth:`~matplotlib.axes.Axes.set_xlim` and +:meth:`~matplotlib.axes.Axes.set_ylim` :class:`Axes` methods). Each :class:`Axes` has a title (set via -:func:`~matplotlib.axes.Axes.set_title`), an x-label (set via -:func:`~matplotlib.axes.Axes.set_xlabel`), and a y-label set via -:func:`~matplotlib.axes.Axes.set_ylabel`). +:meth:`~matplotlib.axes.Axes.set_title`), an x-label (set via +:meth:`~matplotlib.axes.Axes.set_xlabel`), and a y-label set via +:meth:`~matplotlib.axes.Axes.set_ylabel`). The :class:`Axes` class and it's member functions are the primary entry point to working with the OO interface. From a9b25e1dfb4a8b869c4f3a238bcf820c6f1065eb Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 13 Jul 2014 00:12:38 -0400 Subject: [PATCH 17/20] DOC : fix typo --- doc/devel/coding_guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index d042c7d694ce..6c61bd63a697 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -35,7 +35,7 @@ Style rules are acceptable if it makes the code objectively more readable. - You should consider installing/enabling automatic PEP8 checking in your - editor. Part of the test suite in checking PEP8 compliance, things + editor. Part of the test suite is checking PEP8 compliance, things go smoother if the code is mostly PEP8 compliant to begin with. * No tabs (only spaces). No trailing whitespace. From 6fcd723e2583179f57701efc051c463fcb1b4985 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 17 Jul 2014 21:42:56 -0400 Subject: [PATCH 18/20] DOC : minor indentation fix --- doc/devel/coding_guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index 6c61bd63a697..cd12a126942a 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -93,7 +93,7 @@ Documentation A description of foobar foobaz : (type of foobaz) A description of foobaz - """ + """ # some very clever code return foobar, foobaz From a26114dc0ad994fbcc0fa445a91b2529ce9cadae Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 17 Jul 2014 21:52:24 -0400 Subject: [PATCH 19/20] DOC : capitalization change --- doc/faq/usage_faq.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/faq/usage_faq.rst b/doc/faq/usage_faq.rst index 14927db226b8..f786bb39e115 100644 --- a/doc/faq/usage_faq.rst +++ b/doc/faq/usage_faq.rst @@ -77,7 +77,7 @@ This is what you think of as 'a plot', it is the region of the image with the data space (marked as the inner blue box). A given figure can contain many Axes, but a given :class:`~matplotlib.axes.Axes` object can only be in one :class:`~matplotlib.figure.Figure`. The -axes contains two (or three in the case of 3D) +Axes contains two (or three in the case of 3D) :class:`~matplotlib.axis.Axis` objects (be aware of the difference between **Axes** and **Axis**) which take care of the data limits (the data limits can also be controlled via set via the From 19e8ad1cfac780e8c6e2179072669672b828565e Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 17 Jul 2014 22:12:59 -0400 Subject: [PATCH 20/20] DOC : edits from efiring --- doc/faq/usage_faq.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/faq/usage_faq.rst b/doc/faq/usage_faq.rst index f786bb39e115..4f57606d83a0 100644 --- a/doc/faq/usage_faq.rst +++ b/doc/faq/usage_faq.rst @@ -94,14 +94,14 @@ point to working with the OO interface. :class:`~matplotlib.axis.Axis` ------------------------------ -These are the number line like objects (circled in green). They take +These are the number-line-like objects (circled in green). They take care of setting the graph limits and generating the ticks (the marks on the axis) and ticklabels (strings labeling the ticks). The location of the ticks is determined by a :class:`~matplotlib.ticker.Locator` object and the ticklabel strings are formatted by a :class:`~matplotlib.ticker.Formatter`. The combination of the correct :class:`Locator` and :class:`Formatter` gives -very fine control over the tick labels. +very fine control over the tick locations and labels. :class:`~matplotlib.artist.Artist` ---------------------------------- @@ -109,10 +109,10 @@ very fine control over the tick labels. Basically everything you can see on the figure is an artist (even the :class:`Figure`, :class:`Axes`, and :class:`Axis` objects). This includes :class:`Text` objects, :class:`Line2D` objects, -:class:`collection` objects, :class:`Patch` objects ... (you get the idea). -When the figure is rendered, all of the artists are drawn -(recursively) to the **canvas**. A given artist can only be in one -`Axes`. +:class:`collection` objects, :class:`Patch` objects ... (you get the +idea). When the figure is rendered, all of the artists are drawn to +the **canvas**. Most Artists are tied to an Axes; such an Artist +cannot be shared by multiple Axes, or moved from one to another. .. _pylab: