# Matplotlib: Graph/Plot a Straight Line

The slope equation $y=mx+c$ as we know it today is attributed to René Descartes (AD 1596-1650), Father of Analytic Geometry.

The equation $y=mx+c$ represents a straight line graphically, where $m$ is its slope/gradient and $c$ its intercept. In this tutorial, you will learn how to plot $y=mx+b$ in Python with Matplotlib.

Consider the straight line $y=2x+1$, whose slope/gradient is $2$ and intercept is $1$. Before we plot, we need to import NumPy and use its linspace() function to create evenly-spaced points in a given interval. In the below example, linspace(-5,5,100) returns 100 evenly spaced points over the interval [-5,5] and this array of points goes as the first argument of the plot() function, followed by the function itself, followed by the linestyle (which is '-' here) and colour ('r', which stands for red) in abbreviated form. The last argument is the label for the legend.

				
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-5,5,100)
y = 2*x+1
plt.plot(x, y, '-r', label='y=2x+1')
plt.title('Graph of y=2x+1')
plt.xlabel('x', color='#1C2833')
plt.ylabel('y', color='#1C2833')
plt.legend(loc='upper left')
plt.grid()
plt.show()



There are many other line-styles available in Matplotlib besides -.

And the same goes for the colour. Below you can check out the remaining basic in-built colours.

• b: blue
• g: green
• r: red
• c: cyan
• m: magenta
• y: yellow
• k: black
• w: white

# Positioning the Axes at the Centre

When we plot a line with slope and intercept, we usually/traditionally position the axes at the middle of the graph. In the below code, we move the left and bottom spines to the center of the graph applying set_position('center'), while the right and top spines are hidden by setting their colours to none with set_color('none'). The set_ticks_position() function sets the position for the graduations along the applied axis.

					
import matplotlib.pyplot as plt
fig = plt.figure()
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')
plt.plot()
plt.show()



# Multiple Straight Lines

We now plot multiple lines in the same graph, positioning the axes at the centre.

					
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
x = np.linspace(-5,5,100)
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')
plt.plot(x, 2*x+1, '-r', label='y=2x+1')
plt.plot(x, 2*x-1,'-.g', label='y=2x-1')
plt.plot(x, 2*x+3,':b', label='y=2x+3')
plt.plot(x, 2*x-3,'--m', label='y=2x-3')
plt.legend(loc='upper left')
plt.show()