Matplotlib: Plot a Function y=f(x)
In our previous tutorial, we learned how to plot a straight line, or linear equations of type $y=mx+c$.
Here, we will be learning how to plot a defined function $y=f(x)$ in Python, over a specified interval.
We start off by plotting the simplest quadratic equation $y=x^{2}$.
Quadratic Equation
Quadratic equations are second order polynomial equations of type $ax^{2} + bx + c = 0$, where $x$ is a variable and $a \ne 0$. Plotting a quadratic function is almost the same as plotting the straight line in the previous tutorial.
Below is the Matplotlib code to plot the function $y=x^{2}$. It is a simple straight-forward code; the bulk of it in the middle is for setting the axes. As the exponent of $x$ is $2$, there will only be positive values of $y$, so we can position ax.spines['bottom']
at the bottom.
import matplotlib.pyplot as plt
import numpy as np
# 100 linearly spaced numbers
x = np.linspace(-5,5,100)
# the function, which is y = x^2 here
y = x**2
# setting the axes at the centre
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# plot the function
plt.plot(x,y, 'r')
# show the plot
plt.show()
Cubic Equation
Next, we will plot the simplest cubic function $y=x^{3}$.
Since the exponent in $y=x^{3}$ is $3$, the power is bound to have negative values for negative values of $x$. Therefore, for visibility of negative values in the $y$-axis, we need to move the $x$-axis to the centre of the graph. ax.spines['bottom']
is thus positioned to centre.
import matplotlib.pyplot as plt
import numpy as np
# 100 linearly spaced numbers
x = np.linspace(-5,5,100)
# the function, which is y = x^3 here
y = x**3
# setting the axes at the centre
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# plot the function
plt.plot(x,y, 'g')
# show the plot
plt.show()
Trigonometric Functions
Here we plot the trigonometric function $y=\text{sin}(x)$ for the values of $x$ between $-\pi$ and $\pi$. The linspace()
method has its interval set from $-\pi$ to $\pi$.
import matplotlib.pyplot as plt
import numpy as np
# 100 linearly spaced numbers
x = np.linspace(-np.pi,np.pi,100)
# the function, which is y = sin(x) here
y = np.sin(x)
# setting the axes at the centre
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# plot the function
plt.plot(x,y, 'b')
# show the plot
plt.show()
Let us plot it together with two more functions, $y=2\text{sin}(x)$ and $y=3\text{sin}(x)$. This time, we label the functions.
import matplotlib.pyplot as plt
import numpy as np
# 100 linearly spaced numbers
x = np.linspace(-np.pi,np.pi,100)
# the function, which is y = sin(x) here
y = np.sin(x)
# setting the axes at the centre
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# plot the functions
plt.plot(x,y, 'b', label='y=sin(x)')
plt.plot(x,2*y, 'c', label='y=2sin(x)')
plt.plot(x,3*y, 'r', label='y=3sin(x)')
plt.legend(loc='upper left')
# show the plot
plt.show()
And here we plot together both $y=\text{sin}(x)$ and $y=\text{cos}(x)$ over the same interval $-\pi$ to $\pi$.
import matplotlib.pyplot as plt
import numpy as np
# 100 linearly spaced numbers
x = np.linspace(-np.pi,np.pi,100)
# the functions, which are y = sin(x) and z = cos(x) here
y = np.sin(x)
z = np.cos(x)
# setting the axes at the centre
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# plot the functions
plt.plot(x,y, 'c', label='y=sin(x)')
plt.plot(x,z, 'm', label='y=cos(x)')
plt.legend(loc='upper left')
# show the plot
plt.show()
Exponential Function
The exponential function $y=e^{x}$ is never going to have any negative values for any value of $x$. So we move the $x$-axis to the bottom again by setting ax.spines['bottom']
to zero
. We plot it over the interval $-2$ to $2$.
import matplotlib.pyplot as plt
import numpy as np
# 100 linearly spaced numbers
x = np.linspace(-2,2,100)
# the function, which is y = e^x here
y = np.exp(x)
# setting the axes at the centre
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# plot the function
plt.plot(x,y, 'y', label='y=e^x')
plt.legend(loc='upper left')
# show the plot
plt.show()