# Matplotlib Figures, Plots, and Axes
Quick Definition
A figure contains one or more groups of axes.
Each Axes, which can be 2-dimensional or 3-dimensional, contains zero or more plots.
A plot is the thing we normally call "graph" or "chart".
# Figure
The Figure
is the top level container. Inside a figure we can include one or more Axes
classes, each of which can have one or more plots.
The Figure
is what contains everything else, and it is also what we show when we want to display the graph to the screen:
import matplotlib.pyplot as plt
plt.figure()
plt.show()
Here we've used the pyplot
library to create a new Figure
. When we do this, pyplot
automatically "selects" the figure, and it becomes the active figure. Every other function in the pyplot
library will act on that figure until another one is selected.
But note if you run that code, you'll see no output.
The figure is empty, so matplotlib doesn't display a window.
We must first add at least a set of axes to the figure.
# Axes
The Axes
, which is a matplotlib class, is where plots are drawn. You can have multiple plots drawn on a single pair of axes, as below:
Or you can also have multiple Axes
in one figure, as below:
Let's start off by adding a set of 2-dimensional axes to our figure:
import matplotlib.pyplot as plt
plt.figure()
plt.axis([0, 6, 0, 20])
plt.show()
Here we've used plt.axis()
to define the values in our x and y axes. The x axis goes from 0
to 6
, and the y axis goes from 0
to 20
.
Note that plt.axis()
acts on the currently active figure, which is the one that got created when we called plt.figure()
.
At the moment there's nothing drawn in the canvas though, so let's do that!
# Plot
Plots can be drawn on a set of axes, and each plot needs to specify data points for the axes that it is drawn on.
For example, if we have 2-dimensional axes, then for each data point we need to specify its x and y coordinates.
import matplotlib.pyplot as plt
plt.figure()
plt.axis([0, 6, 0, 20])
plt.plot([1, 2, 3, 4], [3, 5, 9, 25])
plt.show()
Here, we use .plot()
to draw 4 points in our axes. The points drawn are:
(1, 3)
(2, 5)
(3, 9)
(4, 25)
Note that the y axis only goes up to 20 though, so therefore this plot will be clipped at 20 in the y axis, and it won't be shown in its entirety:
If we don't specify the axes dimensions ourselves, .plot()
will do it for us based on the provided data:
import matplotlib.pyplot as plt
plt.figure()
plt.plot([1, 2, 3, 4], [3, 5, 9, 25])
plt.show()
Note the y axis here goes to 25, since that's the maximum value in our data set.