Jump to content

matplotlib

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 24.191.40.157 (talk) at 13:33, 20 February 2017 (Tkinter is part of python's standard library and should be included in this list.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

matplotlib
Original author(s)John D. Hunter
Developer(s)Michael Droettboom, et al.
Initial release2003; 21 years ago (2003)[1]
Repository
Written inPython
Engine
  • Cairo
  • Anti-Grain Geometry
Edit this at Wikidata
Operating systemCross-platform
TypePlotting
Licensematplotlib license
Websitematplotlib.org

matplotlib is a plotting library for the Python programming language and its numerical mathematics extension NumPy. It provides an object-oriented API for embedding plots into applications using general-purpose GUI toolkits like Tkinter, wxPython, Qt, or GTK+. There is also a procedural "pylab" interface based on a state machine (like OpenGL), designed to closely resemble that of MATLAB, though its use is discouraged.[2] SciPy makes use of matplotlib.

matplotlib was originally written by John D. Hunter, has an active development community,[3] and is distributed under a BSD-style license. Michael Droettboom was nominated as matplotlib's lead developer shortly before John Hunter's death in 2012.[4]

As of 30 October 2015, matplotlib 1.5.x supports Python versions 2.7 through 3.5. Matplotlib 1.2 is the first version of matplotlib to support Python 3.x. Matplotlib 1.4 is the last version of matplotlib to support Python 2.6.[5]

Comparison with MATLAB

pyplot is a matplotlib module which provides a MATLAB-like interface.[6] matplotlib is designed to be as usable as MATLAB, with the ability to use Python, with the advantage that it is free.

Comparison with Gnuplot

Both gnuplot and matplotlib are mature open-source projects. They both can produce many types of different plots. While it is hard to specify a type of figure that one can do and the other can not, they still have different advantages and disadvantages:

Advantages Disadvantages
Matplotlib
  • Default plot styles with built-in code
  • Deep integration with Python
  • Matlab-style programming interface (this is an advantage for some, but a disadvantage for others).
  • Heavily reliant on other packages, such as Numpy.
  • Only works for Python: hard/impossible to be used in languages other than Python. (But can be used from Julia via PyPlot package)
Gnuplot
  • Cross-language solution: can be used as a plot engine in applications (e.g. GNU Octave, Maxima, JavaGnuplotHybrid) written in different languages through pipes or files.
  • Standalone program: no external dependencies.
  • Very fast when processing large datasets.
  • Easier to manipulate plot details
  • Old default plot styles: often needs small tweaks to produce an attractive figure.
  • A smaller number (compared to Matplotlib) of active members in development.

Examples

Line plot

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> a = np.linspace(0,10,100)
>>> b = np.exp(-a)
>>> plt.plot(a,b)
>>> plt.show()

Histogram

>>> import matplotlib.pyplot as plt
>>> from numpy.random import normal,rand
>>> x = normal(size=200)
>>> plt.hist(x,bins=30)
>>> plt.show()

Scatter plot

>>> import matplotlib.pyplot as plt
>>> from numpy.random import rand
>>> a = rand(100)
>>> b = rand(100)
>>> plt.scatter(a,b)
>>> plt.show()

3D plot

>>> from matplotlib import cm
>>> from mpl_toolkits.mplot3d import Axes3D
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> fig = plt.figure()
>>> ax = fig.gca(projection='3d')
>>> X = np.arange(-5, 5, 0.25)
>>> Y = np.arange(-5, 5, 0.25)
>>> X, Y = np.meshgrid(X, Y)
>>> R = np.sqrt(X**2 + Y**2)
>>> Z = np.sin(R)
>>> surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
>>> plt.show()

More examples

Toolkits

Several toolkits are available which extend matplotlib functionality. Some are separate downloads, others ship with the matplotlib source code but have external dependencies.[7]

  • Basemap: map plotting with various map projections, coastlines, and political boundaries[8]
  • Cartopy: a mapping library featuring object-oriented map projection definitions, and arbitrary point, line, polygon and image transformation capabilities.[9] (matplotlib v1.2 and above)
  • Excel tools: utilities for exchanging data with Microsoft Excel
  • GTK tools: interface to the GTK+ library
  • Qt interface
  • Mplot3d: 3-D plots
  • Natgrid: interface to the natgrid library for gridding irregularly spaced data.
  • matplotlib2tikz: export to Pgfplots for smooth integration into LaTeX documents[10]

References

  1. ^ "Copyright Policy".
  2. ^ "Matplotlib coding styles". matplotlib.org.
  3. ^ "Matplotlib github stats". matplotlib.org.
  4. ^ "Announcing Michael Droettboom as the lead matplotlib developer". matplotlib.org.
  5. ^ "What's new in matplotlib". Retrieved 2015-10-09.
  6. ^ matplotlib - Introduction
  7. ^ "Toolkits". matplotlib.org.
  8. ^ Whitaker, Jeffrey. "The Matplotlib Basemap Toolkit User's Guide (v. 1.0.5)". Matplotlib Basemap Toolkit documentation. Retrieved 24 April 2013.
  9. ^ Elson, Philip. "Cartopy". Retrieved 24 April 2013.
  10. ^ Schlömer, Nico. "matplotlib2tikz". Retrieved 7 November 2016.
  11. ^ "Bigglessimple, elegant python plotting". biggles.sourceforge.net. Retrieved 24 November 2010.
  12. ^ "Chaco". code.enthought.com.
  13. ^ "Gnuplot.py on". gnuplot-py.sourceforge.net. Retrieved 24 November 2010.
  14. ^ "PyCha". bitbucket.org.
  15. ^ "PyPlotter".
  16. ^ "PyX". pyx.sourceforge.net.