0
0
Matplotlibdata~20 mins

Highlighting date ranges in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Date Range Highlighting Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of date range highlighting with matplotlib
What will be the output of this code snippet that highlights a date range on a line plot?
Matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

dates = pd.date_range('2024-01-01', periods=10)
values = np.arange(10)

plt.plot(dates, values)
plt.axvspan(pd.Timestamp('2024-01-03'), pd.Timestamp('2024-01-06'), color='yellow', alpha=0.3)
plt.show()
AA line plot with a yellow transparent vertical band from Jan 3 to Jan 6
BA line plot with a red transparent vertical band from Jan 1 to Jan 10
CA line plot with no highlighted area
DA line plot with a yellow transparent horizontal band from 3 to 6
Attempts:
2 left
💡 Hint
Look at the function plt.axvspan and the dates it uses.
data_output
intermediate
1:30remaining
Number of points inside highlighted date range
Given the following data and highlighted date range, how many data points fall inside the highlighted range?
Matplotlib
import pandas as pd
import numpy as np

dates = pd.date_range('2024-01-01', periods=15)
values = np.random.rand(15)
data = pd.DataFrame({'date': dates, 'value': values})
highlight_start = pd.Timestamp('2024-01-05')
highlight_end = pd.Timestamp('2024-01-10')

inside_points = data[(data['date'] >= highlight_start) & (data['date'] <= highlight_end)]
print(len(inside_points))
A6
B5
C7
D10
Attempts:
2 left
💡 Hint
Count dates from Jan 5 to Jan 10 inclusive.
visualization
advanced
2:30remaining
Identify the correct highlighted date range in plot
Which option shows the correct code to highlight the date range from 2024-02-10 to 2024-02-15 on a time series plot?
Matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

dates = pd.date_range('2024-02-01', periods=20)
values = np.random.randn(20).cumsum()
plt.plot(dates, values)
# Highlight code here
plt.show()
A
plt.axvline(pd.Timestamp('2024-02-10'), color='green')
plt.axvline(pd.Timestamp('2024-02-15'), color='green')
Bplt.axhspan(pd.Timestamp('2024-02-10'), pd.Timestamp('2024-02-15'), color='green', alpha=0.2)
Cplt.axvspan(pd.Timestamp('2024-02-10'), pd.Timestamp('2024-02-15'), color='green', alpha=0.2)
Dplt.fill_between(dates, values, where=(dates >= '2024-02-10') & (dates <= '2024-02-15'), color='green', alpha=0.2)
Attempts:
2 left
💡 Hint
Use vertical span to highlight date ranges on x-axis.
🔧 Debug
advanced
2:00remaining
Identify the error in date range highlighting code
What error will this code produce when trying to highlight a date range?
Matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

dates = pd.date_range('2024-03-01', periods=10)
values = np.arange(10)
plt.plot(dates, values)
plt.axvspan('2024-03-03', '2024-03-06', color='blue', alpha=0.3)
plt.show()
ATypeError: unsupported operand type(s) for -: 'str' and 'str'
BNo error, plot shows highlighted range correctly
CNameError: name 'pd' is not defined
DValueError: could not convert string to float: '2024-03-03'
Attempts:
2 left
💡 Hint
Check the types passed to plt.axvspan for date values.
🚀 Application
expert
3:00remaining
Calculate total duration of multiple highlighted date ranges
Given multiple highlighted date ranges, what is the total number of days covered without counting overlaps twice?
Matplotlib
import pandas as pd

ranges = [
    (pd.Timestamp('2024-04-01'), pd.Timestamp('2024-04-05')),
    (pd.Timestamp('2024-04-04'), pd.Timestamp('2024-04-10')),
    (pd.Timestamp('2024-04-12'), pd.Timestamp('2024-04-15'))
]

# Calculate total days covered by these ranges without double counting overlaps
A15
B14
C12
D13
Attempts:
2 left
💡 Hint
Merge overlapping intervals before summing durations.