How to Plot a Time Series in Matplotlib (With Examples)

Plotting time series data in Matplotlib involves using the popular plotting library to visualize data over a certain period of time. To do this, you need to create a figure and an axis in Matplotlib and then plot the time series data using the plot() function. Additionally, you can customize the plot by using the various parameters that the plot() function offers. With these parameters, you can adjust the color, line style, labels, and other aspects of the plot. Examples are provided to illustrate how to use Matplotlib to plot time series data.


You can use the following syntax to plot a time series in Matplotlib:

import matplotlib.pyplot as plt

plt.plot(df.x, df.y)

This makes the assumption that the x variable is of the class datetime.datetime().

The following examples show how to use this syntax to plot time series data in Python.

Example 1: Plot a Basic Time Series in Matplotlib

The following code shows how to plot a time series in Matplotlib that shows the total sales made by a company during 12 consecutive days:

import matplotlib.pyplot as plt
import datetime
import numpy as np
import pandas as pd

#define data
df = pd.DataFrame({'date': np.array([datetime.datetime(2020, 1, i+1)
                                     for i in range(12)]),
                   'sales': [3, 4, 4, 7, 8, 9, 14, 17, 12, 8, 8, 13]})

#plot time series
plt.plot(df.date, df.sales, linewidth=3)

The x-axis shows the date and the y-axis shows the total sales on each date.

Example 2: Customize the Title & Axis Labels

You can use the following code to add a title and axis labels to the plot:

import matplotlib.pyplot as plt
import datetime
import numpy as np
import pandas as pd

#define data
df = pd.DataFrame({'date': np.array([datetime.datetime(2020, 1, i+1)
                                     for i in range(12)]),
                   'sales': [3, 4, 4, 7, 8, 9, 14, 17, 12, 8, 8, 13]})

#plot time series
plt.plot(df.date, df.sales, linewidth=3)

#add title and axis labels
plt.title('Sales by Date')
plt.xlabel('Date')
plt.ylabel('Sales')

Example 3: Plot Multiple Time Series in Matplotlib

The following code shows how to plot multiple time series in one plot in Matplotlib:

import matplotlib.pyplot as plt
import datetime
import numpy as np
import pandas as pd

#define data
df = pd.DataFrame({'date': np.array([datetime.datetime(2020, 1, i+1)
                                     for i in range(12)]),
                   'sales': [3, 4, 4, 7, 8, 9, 14, 17, 12, 8, 8, 13]})

df2 = pd.DataFrame({'date': np.array([datetime.datetime(2020, 1, i+1)
                                      for i in range(12)]),
                   'returns': [1, 1, 2, 3, 3, 3, 4, 3, 2, 3, 4, 7]})

#plot both time series
plt.plot(df.date, df.sales, label='sales', linewidth=3)
plt.plot(df2.date, df2.returns, color='red', label='returns', linewidth=3)

#add title and axis labels
plt.title('Sales by Date')
plt.xlabel('Date')
plt.ylabel('Sales')

#add legend
plt.legend()

#display plot
plt.show() 

Multiple time series in Matplotlib

x