Matplotlib
Matplotlib is a cross-platform, data visualization and graphical plotting library for Python and its numerical extension NumPy. As such, it offers a viable open source alternative to MATLAB. Developers can also use matplotlib’s APIs (Application Programming Interfaces) to embed plots in GUI applications
A Python matplotlib script is structured so that a few lines of code are all that is required in most instances to generate a visual data plot. The matplotlib scripting layer overlays two APIs:
The pyplot API is a hierarchy of Python code objects topped by?matplotlib.pyplot
An OO (Object-Oriented) API collection of objects that can be assembled with greater flexibility than pyplot. This API provides?direct access to Matplotlib’s backend layers.??
Matplotlib and Pyplot in Python
The pyplot?API has a convenient MATLAB-style stateful interface. In fact, matplotlib was originally written as an open source alternative for MATLAB. The OO API and its interface is more customizable and powerful than pyplot, but considered more difficult to use. As a result, the pyplot interface is more commonly used, and is referred to by default in this article.?
Understanding matplotlib’s pyplot API is key to understanding how to work with plots:
matplotlib.pyplot.figure: Figure?is the top-level container. It includes everything visualized in a plot including one or more?Axes.
matplotlib.pyplot.axes:?Axes?contain most of the elements in a?plot:?Axis, Tick, Line2D, Text,?etc., and sets the coordinates. It is the area in which data is plotted. Axes include the X-Axis, Y-Axis, and possibly a Z-Axis, as well.
For more information about the pyplot API and interface, refer to?What Is Pyplot In Matplotlib
Installing Matplotlib
Matplotlib and its dependencies can be downloaded as a binary (pre-compiled) package from the Python Package Index (PyPI), and installed with the following command:
python -m pip install matplotlib
Matplotlib is also available as uncompiled source files. Compiling from source will require your local system to have the appropriate compiler for your OS, all dependencies, setup scripts, configuration files, and patches available. This can result in a fairly complex installation. Alternatively, consider using the?ActiveState Platform?to automatically build matplotlib from source and package it for your OS.
Matplotlib UI Menu
When matplotlib is used to create a plot, a User Interface (UI) and menu structure are generated. The UI can be used to customize the plot, as well as to pan/zoom and toggle various elements.
Matplotlib and NumPy
Numpy is a package for scientific computing. Numpy is a required dependency for matplotlib, which uses numpy functions for numerical data and multi-dimensional arrays as shown in the following code snippet:
The source code for this example is available in the?Matplotlib: Plot a Numpy Array?section? further down in this article.
Matplotlib and Pandas
Pandas is a library used by matplotlib mainly for data manipulation and analysis. Pandas provides an in-memory 2D data table object called a Dataframe. Unlike numpy, pandas is not a required dependency of matplotlib.
Pandas and numpy are often used together, as shown in the following code snippet:
The source code for this example is available in the?Matplotlib: Plot a Pandas Dataframe?section? further down in this article.
How to Create Matplotlib Plots
This section shows how to create examples of different kinds of plots with matplotlib.
Matplotlib Line Plot
In this example, pyplot is imported as plt, and then used to plot three numbers in a straight line:??
import matplotlib.pyplot as plt
# Plot some numbers:
plt.plot([1, 2, 3])
plt.title(”Line Plot”)?
# Display the plot:
plt.show()
Figure 1.?Line plot generated by Matplotlib:
Matplotlib Pie Plot
In this example, pyplot is imported as plt, and then used to create a chart with four sections that have different labels, sizes and colors:
import matplotlib.pyplot as plt
# Data labels, sizes, and colors are defined:
labels = 'Broccoli', 'Chocolate Cake', 'Blueberries', 'Raspberries'
sizes = [30, 330, 245, 210]
colors = ['green', 'brown', 'blue', 'red']
# Data is plotted:
plt.pie(sizes, labels=labels, colors=colors)
plt.axis('equal')
plt.title(“Pie Plot”)
plt.show()
Figure 2.?Pie plot generated by Matplotlib:
Matplotlib Bar Plot
In this example, pyplot is imported as plt, and then used to plot three vertical bar graphs:
import matplotlib.pyplot as plt
import numpy as np?
# Create a Line2D instance with x and y data in sequences xdata, ydata:
# x data:
xdata=['A','B','C']
# y data:
ydata=[1,3,5]
plt.bar(range(len(xdata)),ydata)
plt.title(“Bar Plot”)
plt.show()
Figure 3.?Bar plot generated by Matplotlib:
Matplotlib: Plot a Numpy Array
In this example, pyplot is imported as plt, and then used to plot a range of numbers stored in a numpy array:
import numpy as np
from matplotlib import pyplot as plt?
# Create an ndarray on x axis using the numpy range() function:
x = np.arange(3,21)
# Store equation values on y axis:
y = 2 * x + 8
plt.title("NumPy Array Plot")
# Plot values using x,y coordinates:
plt.plot(x,y)
plt.show()
Matplotlib: Plot a Pandas DataFrame
In this example, pyplot is imported as plt, and then used to plot a pandas dataframe:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# Hide axes without removing it:
fig.patch.set_visible(False)
ax.axis('off')
ax.axis('tight')
# Create a numpy random array in a pandas dataframe with 10 rows, 4 columns:
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
plt.title("Pandas Dataframe Plot")
ax.table(cellText=df.values, colLabels=df.columns, loc='center')
fig.tight_layout()
plt.show()