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 (portmanteau of MATLAB, plot, and library[3]) is a plottinglibrary for the Pythonprogramming language and its numerical mathematics extension NumPy. It provides an object-orientedAPI 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.[4]SciPy makes use of Matplotlib.
Matplotlib was originally written by John D. Hunter. Since then it has had an active development community[5] 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[6] and was further joined by Thomas Caswell.[7][8] Matplotlib is a NumFOCUS fiscally sponsored project.[9]
Usage in Scientific Research and Education
[edit]Matplotlib is widely used in scientific research as a tool for data visualization. Researchers across disciplines such as physics, astronomy, engineering, and biology use Matplotlib to create publication-quality graphs and plots for their analyses and papers. The library has been used in well-known scientific projects; for example, the Event Horizon Telescope collaboration used Matplotlib to produce visualizations during the effort to create the first image of a black hole.[10] Matplotlib also underpins the plotting functionality of many scientific Python libraries (for instance, pandas uses Matplotlib as its default backend for plotting). Its importance to the scientific community has been acknowledged by institutions such as NASA, which in 2024 awarded a grant to support Matplotlib’s continued development as part of an initiative to fund widely used open-source scientific software.[11]

In education and data science, Matplotlib is frequently used to teach programming and data visualization. It integrates with Jupyter Notebook, allowing students and instructors to generate inline plots and interactively explore data within a notebook environment.[12] Many educational institutions incorporate Matplotlib into their curricula for teaching STEM concepts,[13] and it is widely featured in tutorials, workshops, and open online courses as a primary plotting library. This broad adoption across both academia and industry has helped establish Matplotlib as a standard component of scientific and educational visualization workflows.
Comparison with MATLAB
[edit]Pyplot is a Matplotlib module that provides a MATLAB-like interface.[14] Matplotlib is designed to be as usable as MATLAB, with the ability to use Python, and the advantage of being free and open-source.
Plot Types
[edit]Matplotlib supports various types of 2 dimensional and 3 dimensional plots. The support for two dimensional plots is robust. The support for three dimensional plots was added later and while it is good, it is not as robust as 2 dimensional plots.
Examples
[edit]- Line plot
Displays data in line format showing trends over time - Histogram
Used to display the frequency of subsets in a dataset - Scatter plot
Displays each component of the dataset as a single plotted point; shows relationships between points - 3D plot
Represents the dataset in the X, Y, and Z plane. - Contour plot
Graphs data connecting points of equal values giving a 3D effect - Polar plot
Visualizing data in a circular plane - Image plot
Visualizes 2D arrays as an image - Box Plot
Used to show the distribution of a data set. The median and outliers are highlighted - Pie Chart
Useful for showing the proportions of each category involved - Bar Graph
Useful for comparing different groups side by side
Animations
[edit]Matplotlib-animation[15] capabilities are intended for visualizing how certain data changes. However, one can use the functionality in any way required.
These animations are defined as a function of frame number (or time). In other words, one defines a function that takes a frame number as input and defines/updates the matplotlib-figure based on it.
The time at the beginning of a frame-number since the start of animation can be calculated as -
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.[16]
- Basemap: map plotting with various map projections, coastlines, and political boundaries[17]
- Cartopy: a mapping library featuring object-oriented map projection definitions, and arbitrary point, line, polygon and image transformation capabilities.[18] (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)[19]
- 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
- GeoPandas:[20] simplifies geospatial work in Python without needing a spatial database like PostGIS[21]
- Cartopy: streamlines map creation in matplotlib by enabling users to specify a projection and add coastlines with a single line of code[22]
Related projects
[edit]- Biggles[23]
- Chaco[24]
- DISLIN
- GNU Octave
- gnuplotlib – plotting for numpy with a gnuplot backend
- Gnuplot-py[25]
- PLplot – Python bindings available
- SageMath – uses
Matplotlib
to draw plots - SciPy (modules
plt
andgplt
) - Plotly – for interactive, online Matplotlib and Python graphs
- Bokeh[26] – Python interactive visualization library that targets modern web browsers for presentation
References
[edit]- ^"Copyright Policy".
- ^"REL: v3.10.1". 28 February 2025. Retrieved 19 March 2025.
- ^"History — Matplotlib 3.9.2 documentation".
- ^"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.
- ^"Case Study: First Image of a Black Hole". NumPy. Retrieved 22 April 2025.
- ^"NASA Funds Open-Source Software Underpinning Scientific Innovation". NASA. Retrieved 22 April 2025.
- ^"Interactive notebooks: Sharing the code". Nature. 18 September 2018. Retrieved 22 April 2025.
- ^"Pyplot tutorial". Matplotlib. Retrieved 22 April 2025.
- ^"Matplotlib: Python plotting — Matplotlib 3.2.0 documentation". matplotlib.org. Retrieved 2020-03-14.
- ^"Animations using Matplotlib". matplotlib.org. Retrieved 30 Aug 2024.
- ^"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.
- ^"GeoPandas 0.14.4 — GeoPandas 0.14.4+0.g60c9773.dirty documentation". geopandas.org. Retrieved 2024-04-29.
- ^Jordahl, Kelsey, geopandas: Geographic pandas extensions, retrieved 2024-04-29
- ^"Using cartopy with matplotlib — cartopy 0.15.0 documentation". scitools.org.uk. Retrieved 2024-04-30.
- ^"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.