Bird
Raised Fist0
Matplotlibdata~10 mins

Highlighting date ranges in Matplotlib - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the matplotlib plotting module.

Matplotlib
import [1].pyplot as plt
Drag options to blanks, or click blank then click option'
Apandas
Bnumpy
Cseaborn
Dmatplotlib
Attempts:
3 left
💡 Hint
Common Mistakes
Importing numpy or pandas instead of matplotlib.
Forgetting to import pyplot submodule.
2fill in blank
medium

Complete the code to create a date range from January 1, 2023 to January 10, 2023 using pandas.

Matplotlib
dates = pd.date_range(start='2023-01-01', end=[1])
Drag options to blanks, or click blank then click option'
A'2023-01-10'
B'2023-01-15'
C'2023-01-05'
D'2023-02-01'
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing a date outside the desired range.
Using wrong date format.
3fill in blank
hard

Fix the error in the code to highlight the date range between '2023-01-03' and '2023-01-06' on the plot.

Matplotlib
plt.axvspan(pd.to_datetime('2023-01-03'), [1], color='yellow', alpha=0.3)
Drag options to blanks, or click blank then click option'
A'2023-01-06'
Bpd.to_datetime('2023-01-06')
Cdatetime('2023-01-06')
Dpd.date_range('2023-01-06')
Attempts:
3 left
💡 Hint
Common Mistakes
Passing date strings directly without conversion.
Using wrong datetime conversion functions.
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that maps each date to its value only if the value is greater than 50.

Matplotlib
highlighted = {date: value for date, value in data.items() if value [1] 50 and date [2] pd.to_datetime('2023-01-05')}
Drag options to blanks, or click blank then click option'
A>
B<
C>=
D<=
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong comparison operators.
Mixing up date and value comparisons.
5fill in blank
hard

Fill all three blanks to create a plot with highlighted date ranges and labels.

Matplotlib
plt.plot(dates, values)
plt.axvspan([1], [2], color='green', alpha=0.2)
plt.text([3], max(values), 'Highlight', verticalalignment='bottom')
plt.show()
Drag options to blanks, or click blank then click option'
Apd.to_datetime('2023-01-02')
Bpd.to_datetime('2023-01-07')
Cpd.to_datetime('2023-01-03')
Dpd.to_datetime('2023-01-05')
Attempts:
3 left
💡 Hint
Common Mistakes
Using dates outside the data range.
Placing label outside the plot area.

Practice

(1/5)
1. What does the plt.axvspan(start_date, end_date) function do in matplotlib?
easy
A. It draws a horizontal line at start_date.
B. It highlights a vertical span (date range) on the plot between start_date and end_date.
C. It creates a scatter plot of dates between start_date and end_date.
D. It sets the x-axis limits to start_date and end_date.

Solution

  1. Step 1: Understand the function purpose

    plt.axvspan is used to highlight a vertical area on the plot, usually to mark a range on the x-axis.
  2. Step 2: Match parameters to behavior

    The parameters start_date and end_date define the start and end of this vertical span on the x-axis, highlighting that date range.
  3. Final Answer:

    It highlights a vertical span (date range) on the plot between start_date and end_date. -> Option B
  4. Quick Check:

    Highlight date range = plt.axvspan(start_date, end_date) [OK]
Hint: Remember axvspan highlights vertical areas between two x-values [OK]
Common Mistakes:
  • Confusing axvspan with line drawing functions
  • Thinking it changes axis limits
  • Assuming it plots points instead of highlighting
2. Which of the following is the correct syntax to highlight the date range from '2023-01-01' to '2023-01-10' with a semi-transparent red color in matplotlib?
easy
A. plt.axvspan(start='2023-01-01', end='2023-01-10', color='red', alpha=0.5)
B. plt.axvspan('2023-01-01', '2023-01-10', color='red', transparency=0.5)
C. plt.axvspan('2023-01-01', '2023-01-10', color='red', alpha=0.5)
D. plt.axvspan('2023-01-01', '2023-01-10', alpha=50, color='red')

Solution

  1. Step 1: Check parameter names and order

    plt.axvspan takes start and end positions as first two arguments, then keyword arguments like color and alpha.
  2. Step 2: Validate correct keyword for transparency

    alpha controls transparency and should be between 0 and 1. The value 0.5 means 50% transparent.
  3. Final Answer:

    plt.axvspan('2023-01-01', '2023-01-10', color='red', alpha=0.5) -> Option C
  4. Quick Check:

    Use alpha for transparency, not transparency keyword [OK]
Hint: Use alpha (0-1) for transparency, not transparency keyword [OK]
Common Mistakes:
  • Using 'transparency' instead of 'alpha'
  • Passing alpha as 50 instead of 0.5
  • Using named parameters start= and end= which are invalid
3. Given the following code, what will be the color and transparency of the highlighted date range?
import matplotlib.pyplot as plt
import pandas as pd

dates = pd.date_range('2023-01-01', periods=5)
values = [10, 20, 15, 25, 30]
plt.plot(dates, values)
plt.axvspan(pd.Timestamp('2023-01-02'), pd.Timestamp('2023-01-04'), color='green', alpha=0.3)
plt.show()
medium
A. A green shaded area with 30% opacity between Jan 2 and Jan 4
B. A green shaded area with 70% opacity between Jan 2 and Jan 4
C. A fully opaque green shaded area between Jan 2 and Jan 4
D. No shaded area will appear because alpha is too low

Solution

  1. Step 1: Understand alpha parameter meaning

    Alpha=0.3 means 30% opacity (or 70% transparent), so the color is faint but visible.
  2. Step 2: Confirm color and date range

    The color is green, and the highlighted range is from Jan 2 to Jan 4 as specified.
  3. Final Answer:

    A green shaded area with 30% opacity between Jan 2 and Jan 4 -> Option A
  4. Quick Check:

    alpha=0.3 means 30% opacity, color='green' [OK]
Hint: Alpha 0.3 means 30% opacity, not 70% [OK]
Common Mistakes:
  • Confusing alpha as transparency percentage
  • Thinking alpha=0.3 means 70% opacity
  • Assuming no highlight appears if alpha is low
4. Identify the error in the following code snippet that tries to highlight a date range:
import matplotlib.pyplot as plt
plt.axvspan('2023-01-01', '2023-01-05', color='blue', alpha=0.4)
plt.show()
medium
A. Dates are passed as strings; they should be converted to datetime objects.
B. The alpha value must be an integer, not a float.
C. The color parameter should be 'colour' instead of 'color'.
D. plt.show() is missing and must be added.

Solution

  1. Step 1: Check parameter types for axvspan

    plt.axvspan expects numeric or datetime values for start and end. Passing strings directly causes errors.
  2. Step 2: Correct usage for dates

    Convert strings to datetime objects using pd.Timestamp or datetime before passing.
  3. Final Answer:

    Dates are passed as strings; they should be converted to datetime objects. -> Option A
  4. Quick Check:

    axvspan needs datetime, not string dates [OK]
Hint: Convert date strings to datetime objects before axvspan [OK]
Common Mistakes:
  • Passing date strings directly without conversion
  • Misusing alpha as integer
  • Wrong color parameter spelling
5. You have a time series plot of daily sales data from '2023-01-01' to '2023-01-31'. You want to highlight weekends (Saturdays and Sundays) with a light gray transparent background. Which approach correctly applies this using matplotlib?
hard
A. Use plt.fill_between with weekend dates and color='gray', alpha=0.2.
B. Use plt.axvspan once with start='2023-01-01' and end='2023-01-31' and color='gray', alpha=0.2.
C. Plot vertical lines on weekends using plt.axvline with color='gray' and alpha=0.2.
D. Loop through dates, check if weekday is Saturday or Sunday, then use plt.axvspan for each weekend with color='gray' and alpha=0.2.

Solution

  1. Step 1: Identify weekend dates in the range

    Loop through each date, check if it is Saturday (weekday=5) or Sunday (weekday=6).
  2. Step 2: Highlight each weekend separately

    Use plt.axvspan for each weekend day or range with desired color and transparency.
  3. Step 3: Understand why other options fail

    Use plt.axvspan once with start='2023-01-01' and end='2023-01-31' and color='gray', alpha=0.2. highlights entire month, not weekends. Plot vertical lines on weekends using plt.axvline with color='gray' and alpha=0.2. draws lines, not spans. Use plt.fill_between with weekend dates and color='gray', alpha=0.2. is for y-axis fills, not x-axis spans.
  4. Final Answer:

    Loop through dates, check if weekday is Saturday or Sunday, then use plt.axvspan for each weekend with color='gray' and alpha=0.2. -> Option D
  5. Quick Check:

    Highlight weekends individually with axvspan [OK]
Hint: Highlight each weekend separately with axvspan in a loop [OK]
Common Mistakes:
  • Highlighting entire date range instead of weekends
  • Using axvline instead of axvspan for spans
  • Trying to fill y-axis area instead of x-axis date range
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard