Using numpy with Matplotlib
Martin McBride, 2022-06-10
Tags numeric python numpy linspace function plot pandas matplotlib scipy data science
Categories matplotlib numpy
Here we will look at how to use numpy to create the x values and y values more easily.
Creating the x values
We want to create a set of 100 x values, equally spaced over the range 0 to 12. We can do this using Python lists by scaling the loop variable.
However, numpy has a function linspace that is designed to do this job. It has two advantages:
- it is more readable
- it covers the exact range 0 to 12, with the intermediate values equally spaced
If you recall, our previous code went from 0 to almost 12, which wasn't really much of a problem, but it wasn't quite correct.
Here is how we use
linspace to create our range:
xa = np.linspace(0, 12, 100)
Creating the y values
NumPy supports universal functions. These allow you to operate on entire arrays in one go:
ya = np.sin(xa)*np.exp(-xa/4)
This performs the same calculation on each of the 100 elements of
xa, creating a new 100-element array
ya containing the results. This avoids a loop, which makes the code more readable, but also more efficient.
Here is the complete code:
from matplotlib import pyplot as plt import numpy as np xa = np.linspace(0, 12, 100) ya = np.sin(xa)*np.exp(-xa/4) plt.plot(xa, ya) plt.show()
This code is shorter and more readable, as well as being more efficient. This becomes more important with large data sets, and especially 2-dimensional data.
Here is the output:
This image is almost exactly the same as before. There is a very tiny change in scale because (as we noted before) this graph has values 0 to 12 whereas the previous graph has values 0 to almost 12. The difference is only visible if you compare the graphs pixel for pixel.
Matplotlib for data science
NumPy is a key component used in data science applications, along with Pandas and SciPy. Matplotlib works well with these libraries, making it a very useful library for data science visualisation.
The code for this section is available on github as numpy-function.py.