Plotting time-series
data
I N T R O D U C T I O N TO D ATA V I S U A L I Z AT I O N W I T H M AT P LOT L I B
Ariel Rokem
Data Scientist
Time-series data
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Climate change time-series
date,co2,relative_temp
1958-03-06,315.71,0.1
1958-04-06,317.45,0.01
1958-05-06,317.5,0.08
1958-06-06,-99.99,-0.05
1958-07-06,315.86,0.06
1958-08-06,314.93,-0.06
...
2016-08-06,402.27,0.98
2016-09-06,401.05,0.87
2016-10-06,401.59,0.89
2016-11-06,403.55,0.93
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
DateTimeIndex
climate_change.index
DatetimeIndex(['1958-03-06', '1958-04-06', '1958-05-06', '1958-06-06
'1958-07-06', '1958-08-06', '1958-09-06', '1958-10-06
'1958-11-06', '1958-12-06',
...
'2016-03-06', '2016-04-06', '2016-05-06', '2016-06-06
'2016-07-06', '2016-08-06', '2016-09-06', '2016-10-06
'2016-11-06', '2016-12-06'],
dtype='datetime64[ns]', name='date', length=706, freq=
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Time-series data
climate_change['relative_temp'] climate_change['co2']
0 0.10 0 315.71
1 0.01 1 317.45
2 0.08 2 317.50
3 -0.05 3 NaN
4 0.06 4 315.86
5 -0.06 5 314.93
6 -0.03 6 313.20
7 0.04 7 NaN
... ...
701 0.98 701 402.27
702 0.87 702 401.05
703 0.89 703 401.59
704 0.93 704 403.55
705 0.81 705 404.45
Name:co2, Length: 706, dtype: float64 Name:co2, Length: 706, dtype: float64
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Plotting time-series data
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(climate_change.index, climate_change['co2'])
ax.set_xlabel('Time')
ax.set_ylabel('CO2 (ppm)')
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Zooming in on a decade
sixties = climate_change["1960-01-01":"1969-12-31"]
fig, ax = plt.subplots()
ax.plot(sixties.index, sixties['co2'])
ax.set_xlabel('Time')
ax.set_ylabel('CO2 (ppm)')
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Zooming in on one year
sixty_nine = climate_change["1969-01-01":"1969-12-31"]
fig, ax = plt.subplots()
ax.plot(sixty_nine.index, sixty_nine['co2'])
ax.set_xlabel('Time')
ax.set_ylabel('CO2 (ppm)')
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Let's practice time-
series plotting!
I N T R O D U C T I O N TO D ATA V I S U A L I Z AT I O N W I T H M AT P LOT L I B
Plotting time-series
with different
variables
I N T R O D U C T I O N TO D ATA V I S U A L I Z AT I O N W I T H M AT P LOT L I B
Ariel Rokem
Data Scientist
Plotting two time-series together
import pandas as pd
climate_change = pd.read_csv('climate_change.csv',
parse_dates=["date"],
index_col="date")
climate_change
co2 relative_temp
date
1958-03-06 315.71 0.10
1958-04-06 317.45 0.01
1958-07-06 315.86 0.06
... ... ...
2016-11-06 403.55 0.93
2016-12-06 404.45 0.81
[706 rows x 2 columns]
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Plotting two time-series together
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(climate_change.index, climate_change["co2"])
ax.plot(climate_change.index, climate_change["relative_temp"])
ax.set_xlabel('Time')
ax.set_ylabel('CO2 (ppm) / Relative temperature')
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Using twin axes
fig, ax = plt.subplots()
ax.plot(climate_change.index, climate_change["co2"])
ax.set_xlabel('Time')
ax.set_ylabel('CO2 (ppm)')
ax2 = ax.twinx()
ax2.plot(climate_change.index, climate_change["relative_temp"])
ax2.set_ylabel('Relative temperature (Celsius)')
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Separating variables by color
fig, ax = plt.subplots()
ax.plot(climate_change.index, climate_change["co2"], color='blue')
ax.set_xlabel('Time')
ax.set_ylabel('CO2 (ppm)', color='blue')
ax2 = ax.twinx()
ax2.plot(climate_change.index, climate_change["relative_temp"],
color='red')
ax2.set_ylabel('Relative temperature (Celsius)', color='red')
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Coloring the ticks
fig, ax = plt.subplots()
ax.plot(climate_change.index, climate_change["co2"],
color='blue')
ax.set_xlabel('Time')
ax.set_ylabel('CO2 (ppm)', color='blue')
ax.tick_params('y', colors='blue')
ax2 = ax.twinx()
ax2.plot(climate_change.index,
climate_change["relative_temp"],
color='red')
ax2.set_ylabel('Relative temperature (Celsius)',
color='red')
ax2.tick_params('y', colors='red')
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Coloring the ticks
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
A function that plots time-series
def plot_timeseries(axes, x, y, color, xlabel, ylabel):
axes.plot(x, y, color=color)
axes.set_xlabel(xlabel)
axes.set_ylabel(ylabel, color=color)
axes.tick_params('y', colors=color)
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Using our function
fig, ax = plt.subplots()
plot_timeseries(ax, climate_change.index, climate_change['co2'],
'blue', 'Time', 'CO2 (ppm)')
ax2 = ax.twinx()
plot_timeseries(ax, climate_change.index,
climate_change['relative_temp'],
'red', 'Time', 'Relative temperature (Celsius)')
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Create your own
function!
I N T R O D U C T I O N TO D ATA V I S U A L I Z AT I O N W I T H M AT P LOT L I B
Annotating time-
series data
I N T R O D U C T I O N TO D ATA V I S U A L I Z AT I O N W I T H M AT P LOT L I B
Ariel Rokem
Data Scientist
Time-series data
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Annotation
fig, ax = plt.subplots()
plot_timeseries(ax, climate_change.index, climate_change['co2'],
'blue', 'Time', 'CO2 (ppm)')
ax2 = ax.twinx()
plot_timeseries(ax2, climate_change.index,
climate_change['relative_temp'],
'red', 'Time', 'Relative temperature (Celsius)')
ax2.annotate(">1 degree", xy=[pd.TimeStamp("2015-10-06"), 1])
plt.show()
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Positioning the text
ax2.annotate(">1 degree",
xy=(pd.Timestamp('2015-10-06'), 1),
xytext=(pd.Timestamp('2008-10-06'), -0.2))
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Adding arrows to annotation
ax2.annotate(">1 degree",
xy=(pd.Timestamp('2015-10-06'), 1),
xytext=(pd.Timestamp('2008-10-06'), -0.2),
arrowprops={})
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Customizing arrow properties
ax2.annotate(">1 degree",
xy=(pd.Timestamp('2015-10-06'), 1),
xytext=(pd.Timestamp('2008-10-06'), -0.2),
arrowprops={"arrowstyle":"->", "color":"gray"})
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Customizing annotations
https://matplotlib.org/users/annotations.html
INTRODUCTION TO DATA VISUALIZATION WITH MATPLOTLIB
Practice annotating
plots!
I N T R O D U C T I O N TO D ATA V I S U A L I Z AT I O N W I T H M AT P LOT L I B