Matplotlib
![]() | |
![]() Screenshot of Matplotlib plots and code | |
Original author(s) | John D. Hunter |
---|---|
Developer(s) | Michael Droettboom, et al. |
Initial release | 2003[1] |
Stable release | 3.10.1[2] ![]() |
Repository | |
Written in | Python |
Engine | Cairo, Anti-Grain Geometry |
Operating system | Cross-platform |
Type | Plotting |
License | Matplotlib license |
Website | matplotlib |
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. Since then it has had 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 was further joined by Thomas Caswell.[6][7] Matplotlib is a NumFOCUS fiscally sponsored project.[8]
Comparison with MATLAB
Pyplot is a Matplotlib module that provides a MATLAB-like interface.[9] Matplotlib is designed to be as usable as MATLAB, with the ability to use Python, and the advantage of being free and open-source.[citation needed]
Examples
Pie charts [10]
Label slices
To add labels, pass a list of labels to the labels parameter, Matplotlib already calculates the percentage. This basic line of code does not show the percentages in the output.
import matplotlib.pyplot as plt
labels = 'Flamingos', 'Cats', 'Dogs', 'Monkeys'
sizes = [25, 5, 50, 13]
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels)
</syntaxhighlight>
Auto-label slices
Pass a function or format string to autopct to label slices. This puts the percentage in the slices of the output pie chart.
import matplotlib.pyplot as plt
labels = 'Flamingos', 'Cats', 'Dogs', 'Monkeys'
sizes = [25, 5, 50, 13]
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, autopct='%1.1f%%')
Explode, shade, and rotate slices
This example orders the slices, separates (explodes) them, and rotates them. (Exploding them means highlighting them and seperating them and adding a shadow.) This code explodes the slice with highest percentage in the output.
import matplotlib.pyplot as plt
labels = 'Flamingos', 'Cats', 'Dogs', 'Monkeys'
sizes = [25, 5, 50, 13]
explode = (0.1, , 0, 0) # only "explode" the 1st slice.
fig, ax = plt.subplots()
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
plt.show()
Examples
-
Line plot
-
Histogram
-
Scatter plot
-
3D plot
-
Image plot
-
Contour plot
-
Scatter plot
-
Polar plot
-
Line plot
-
3-D plot
-
Image plot
Toolkits
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.
- tikzplotlib: export to Pgfplots for smooth integration into LaTeX documents (formerly known as matplotlib2tikz)[14]
- Seaborn: provides an API on top of Matplotlib that offers sane choices for plot style and color defaults, defines simple high-level functions for common statistical plot types, and integrates with the functionality provided by Pandas
Related projects
- Biggles[15]
- Chaco[16]
- DISLIN
- GNU Octave
- gnuplotlib – plotting for numpy with a gnuplot backend
- Gnuplot-py[17]
- PLplot – Python bindings available
- SageMath – uses
Matplotlib
to draw plots - SciPy (modules
plt
andgplt
) - Plotly – for interactive, online Matplotlib and Python graphs
- Bokeh[18] – Python interactive visualization library that targets modern web browsers for presentation
References
- ^ "Copyright Policy".
- ^ "REL: v3.10.1". 28 February 2025. Retrieved 19 March 2025.
- ^ "API Overview". matplotlib.org.
- ^ "Matplotlib github stats". matplotlib.org.
- ^ "Announcing Michael Droettboom as the lead Matplotlib developer". matplotlib.org. Archived from the original on 2020-10-27. Retrieved 2013-04-24.
- ^ "Matplotlib Lead Developer Explains Why He Can't Fix the Docs—But You Can – NumFOCUS". NumFOCUS. 2017-10-05. Retrieved 2018-04-11.
- ^ "Credits – Matplotlib 2.2.2 documentation". matplotlib.org. Retrieved 2018-04-11.
- ^ "NumFOCUS Sponsored Projects". NumFOCUS. Retrieved 2021-10-25.
- ^ "Matplotlib: Python plotting — Matplotlib 3.2.0 documentation". matplotlib.org. Retrieved 2020-03-14.
- ^ "Pie charts — Matplotlib 3.8.3 documentation". matplotlib.org. Retrieved 2024-02-24.
- ^ "Toolkits". matplotlib.org.
- ^ Whitaker, Jeffrey. "The Matplotlib Basemap Toolkit User's Guide (v. 1.0.5)". Matplotlib Basemap Toolkit documentation. Retrieved 24 April 2013.
- ^ Elson, Philip. "Cartopy". Retrieved 24 April 2013.
- ^ Schlömer, Nico. "tikzplotlib". GitHub. Retrieved 7 November 2016.
- ^ "Bigglessimple, elegant python plotting". biggles.sourceforge.net. Retrieved 24 November 2010.
- ^ "Chaco". code.enthought.com.
- ^ "Gnuplot.py on". gnuplot-py.sourceforge.net. Retrieved 24 November 2010.
- ^ "Bokeh 2.0.0 Documentation". docs.bokeh.org. Retrieved 2020-03-14.