matplotlib

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Matplotlib
Matplotlib logo.svg
Screenshot of matplotlib plots and code
Screenshot of matplotlib plots and code
Original author(s) John D. Hunter
Developer(s) Michael Droettboom, et al.
Initial release 2003; 15 years ago (2003)[1]
Stable release
2.2.3 / 10 August 2018; 37 days ago (2018-08-10)[2]
Preview release
3.0.0rc2 / 28 August 2018; 19 days ago (2018-08-28)
Repository Edit this at Wikidata
Written in Python
Operating system Cross-platform
Type Plotting
License matplotlib license
Website matplotlib.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.[3] SciPy makes use of matplotlib.

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

As of 23 June 2017, matplotlib 2.0.x supports Python versions 2.7 through 3.6. 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.[8]

Matplotlib has pledged to not support Python 2 past 2020 by signing the Python 3 Statement.[9]

Comparison with MATLAB[edit]

Pyplot is a matplotlib module which provides a MATLAB-like interface.[10] Matplotlib is designed to be as usable as MATLAB, with the ability to use Python, and the advantage of being free and open-source.

Examples[edit]

Line plot

Matplotlib basic v.svg
>>> 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

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

Scatter plot

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

3D plot

Matplotlib 3d v.svg
>>> 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

A large list of example plot with their source code can be found on the Matplotlib Gallery.

Toolkits[edit]

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

  • Basemap: map plotting with various map projections, coastlines, and political boundaries[12]
  • Cartopy: a mapping library featuring object-oriented map projection definitions, and arbitrary point, line, polygon and image transformation capabilities.[13] (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[14]

Related projects[edit]

References[edit]

  1. ^ "Copyright Policy". 
  2. ^ "Releases – matplotlib". 
  3. ^ "Matplotlib coding styles". matplotlib.org. 
  4. ^ "Matplotlib github stats". matplotlib.org. 
  5. ^ "Announcing Michael Droettboom as the lead matplotlib developer". matplotlib.org. 
  6. ^ "Matplotlib Lead Developer Explains Why He Can't Fix the Docs—But You Can - NumFOCUS". NumFOCUS. 2017-10-05. Retrieved 2018-04-11. 
  7. ^ "Credits — Matplotlib 2.2.2 documentation". matplotlib.org. Retrieved 2018-04-11. 
  8. ^ "Installing -- Matplotlib 2.0.2 documentation". Retrieved 2017-06-23. 
  9. ^ "Add matplotlib to list by takluyver · Pull Request #20 · python3statement/python3statement.github.io". GitHub. Retrieved 2018-04-11. 
  10. ^ matplotlib - Introduction
  11. ^ "Toolkits". matplotlib.org. 
  12. ^ Whitaker, Jeffrey. "The Matplotlib Basemap Toolkit User's Guide (v. 1.0.5)". Matplotlib Basemap Toolkit documentation. Retrieved 24 April 2013. 
  13. ^ Elson, Philip. "Cartopy". Retrieved 24 April 2013. 
  14. ^ Schlömer, Nico. "matplotlib2tikz". Retrieved 7 November 2016. 
  15. ^ "Bigglessimple, elegant python plotting". biggles.sourceforge.net. Retrieved 24 November 2010. 
  16. ^ "Chaco". code.enthought.com. 
  17. ^ "Gnuplot.py on". gnuplot-py.sourceforge.net. Retrieved 24 November 2010. 
  18. ^ "PyCha". bitbucket.org. 
  19. ^ "PyPlotter". 
  20. ^ "PyX". pyx.sourceforge.net. 
  21. ^ "Welcome to Bokeh". 

External links[edit]