Skip to content

Line Plots

Line Plots

Line plots can be created in Python with Matplotlib's pyplot library. To build a line plot, first import Matplotlib. It is a standard convention to import Matplotlib's pyplot library as plt. The plt alias will be familiar to other Python programmers.

If using a Jupyter notebook include the line %matplotlib inline after the imports. %matplotlib inline is a Jupyter notebook magic command which causes Matplotlib plots to display directly inside Jupyter notebook output cells.

To build our first plot, we will use NumPy, a numerical computing library for Python. NumPy is typically imported with the alias np.

In [1]:
import matplotlib.pyplot as plt
import numpy as np
# include if using a Jupyter notebook
%matplotlib inline

NumPy's np.arange() function creates an array of numbers with the parameters np.arange(start,stop,step). NumPy's np.sin() and np.pi functions do what you expect.
In [2]:
x = np.arange(0, 4 * np.pi, 0.1)
y = np.sin(x)

To create a line plot, pass an array or list of numbers as an argument to Matplotlib's plt.plot() function. The command is needed at the end to show the plot. Make sure to include the double parenthesis () in
In [3]:
plt.plot(x, y)

Features of a Matplotlib plot

A variety of features on a Matplotlib plot can be specified. The following is a list of commonly defined features:

Line Color, Line Width, Line Style, Line Opacity and Marker Options

The color, width, and style of line in a plot can be specified. Line color, line width, and line style are included as extra arguments in the plt.plot() function call.on call.

            linewideth=<float or int>,
            linestyle='<linestyle abbreviation>',
            color='<color abbreviation>',
            marker='<marker abbreviation>')

An example plt.plot() function call including line color, line width, and line style options is:

plt.plot(x, y,

Below is a list of linewidths (many other widths are also available).

linewidth=<float or int> Line Width
0.5 0.5 pixels wide
1 1 pixel wide
1.5 1.5 pixels wide
2 2 pixels wide
3 3 pixels wide

Below is a list of line styles.

linestyle='<style abbreviation>' Line Style
'-' or 'solid' solid line (default)
'--' or 'dashed' dashed line
'-.' or 'dashdot' dash-dot line
':' or 'dotted' dotted line
'None' or ' ' or '' no line

Below is a list of color abbreviations. Note 'b' is used for blue and 'k' is used for black.

color ='<color abbreviation>' Color Name
'b' Blue
'c' Cyan
'g' Green
'k' Black
'm' magenta
'r' Red
'w' White
'y' Yellow

Colors can also be specified in hexadecimal form surrounded by quotation marks like '#FF69B4' or in RGBA (red, green, blue, opacity) color surrounded by parenthesis like (255,182,193,0.5).

color ='<color abbreviation>' Color Format
'#FF69B4' hexadecimal
(255,182,193,0.5) RGBA

Below is a list of alpha (opacity) values (any alpha value between 0.0 and 1.0 is possible).

alpha = <float or int> Opacity
0 transparent
0.5 Half transparent
1.0 Opaque

Below is a list of maker styles.

marker='<marker abbreviation>' Marker Style
'.' point
',' one pixel
'o' circle
'v' triangle_down
'^' triangle_up
'8' octagon
's' square
'p' pentagon
'*' star
'h' hexagon 1
'H' hexagon 2
'+' plus
'P' filled plus
'x' x
'X' filled x
'D' diamond
'd' thin diamond

In addition to marker='<marker style>', the color of the marker edge, the color of the marker face and the size of the marker can be specified with:

plt.plot( .... 
         markeredgecolor='<color abbreviation>',
         markerfacecolor='<color abbreviation>',
         markersize=<float or int>


The plot title will be shown above the plot. The plt.title() command accepts a string as an argument.

plt.title('My Title')

x-axis label

The x-axis label is shown below the x-axis. The plt.xlabel() command accepts a string as an argument.

plt.xlabel('My x-axis label')

y-axis label

The y-axis label is shown to the left of the y-axis. The plt.ylabel() command accepts a string as an argument.

plt.ylabel('My y-axis label')


You can use the plt.legend() command to insert a legend on a plot. The legend will appear within the plot area, in the upper right corner by default. The plt.legend() command accepts a list of strings and optionally accepts a loc= argument to position the legend in a different location

plt.legend(['entry1','entry2'], loc = 0)

The following are the location codes for the legend location. These numbers need to be placed after loc= in the plt.legend() call.

Legend Location loc = <number>
'best' 0
'upper right' 1
'upper left' 2
'lower left' 3
'lower right' 4
'right' 5
'center left' 6
'center right' 7
'lower center' 8
'upper center' 9
'center' 10
#### Grid

A grid can be shown on the plot using the plt.grid() command. By defaut, the grid is turned off. To turn on the grid use:


The only valid options are plt.grid(True) and plt.grid(False). Note that True and False are capitalized and are not enclosed in quotations.

Tick Labels

Tick labels can be specified on the plot using plt.xticks() and plt.yticks(). To add tick labels use:

plt.xticks([locations list],[labels list])
plt.yticks([locations list],[labels list])

The [locations list] can be a Python list or NumPy array of tick locations . The [labels list] is a Python list or NumPy array of strings.

Build a plot in five steps

Line plots with the specified features above are constructed in Python according to this general outline:

  1. Imports
  2. Define data
  3. Plot Data including options
  4. Add plot details
  5. Show the plot

Details of each step is explained below.

1. Imports

Import matplot.pyplot as plt, as well as any other modules needed to work with the data such as NumPy or Pandas. If using a Jupyter notebook include the line %matplotlib inline in the import section.

2. Define data

The plot needs to contain data. Data is defined after the imports. Typically, data for plots is contained in Python lists, NumPy arrays or Pandas dataframes.

3. Plot data including options

Use plt.plot() to plot the data you defined. Note the plt.plot() line needs to be called before any other plot details are specified. Otherwise, the details have no plot to apply to.

Besides data, the plt.plot() function can include keyword arguments such as:

  • linewideth= <float or int>
  • linestyle='<linestyle abbreviation>'
  • color='<color abbreviation>'
  • alpha= <float or int>
  • marker='<marker abbreviation>'
  • markeredgecolor='<color abbreviation>'
  • markerfacecolor='<color abbreviation>'
  • markersize=<float or int>

4. Add plot details

Add details such as a title, axis labels, legend, grid, and tick labels. Plot details to add include:

  • plt.title('<title string>')
  • plt.xlabel('<x-axis label string>')
  • plt.ylabel('<y-axis label string>')
  • plt.legend(['list','of','strings'])
  • ptl.grid(<True or False>)
  • plt.xticks([locations list or array], [labels list])
  • plt.yticks([locations list or array], [labels list])

5. Show the plot

Use the command to show the plot. causes the plot to display in a Jupyter notebook or pop out as a new window if the plot is constructed in a separate .py file. Note that needs to be called after all of the plot specifications. The next code section follows this outline. The resulting plot is shown below.

In [4]:
# Imports
import numpy as np
import matplotlib.pyplot as plt
# include if using a Jupyter notebook. Remove if using a .py-file.
%matplotlib inline

# Define data x = np.arange(0, 4 * np.pi, 0.2) y = np.sin(x)

# Plot data including options plt.plot(x, y, linewidth=0.5, linestyle='--', color='r', marker='o', markersize=10, markerfacecolor=(1, 0, 0, 0.1))

# Add plot details plt.title('Plot of sin(x) vs x from 0 to 4 pi') plt.xlabel('x (0 to 4 pi)') plt.ylabel('sin(x)') plt.legend(['sin(x)']) plt.xticks( np.arange(0, 4*np.pi, np.pi/2), ['0','\pi/2','\pi','3\pi/2','2\pi','5\pi/2','3\pi','7\pi/2']) plt.grid(True)

# Show the plot