Bird
Raised Fist0
Matplotlibdata~20 mins

Multiple time series comparison in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Multiple Time Series Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ visualization
intermediate
2:00remaining
Identify the correct plot for multiple time series

Given three time series data sets, which plot correctly shows all three series on the same graph with distinct colors and a legend?

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

dates = pd.date_range('2023-01-01', periods=5)
data1 = np.array([1, 3, 2, 5, 4])
data2 = np.array([2, 2, 3, 4, 5])
data3 = np.array([5, 3, 4, 2, 1])
A
plt.scatter(dates, data1, label='Series 1')
plt.scatter(dates, data2, label='Series 2')
plt.scatter(dates, data3, label='Series 3')
plt.legend()
plt.show()
B
plt.plot(dates, data1)
plt.plot(dates, data2)
plt.plot(dates, data3)
plt.show()
C
plt.plot(data1, label='Series 1')
plt.plot(data2, label='Series 2')
plt.plot(data3, label='Series 3')
plt.legend()
plt.show()
D
plt.plot(dates, data1, label='Series 1')
plt.plot(dates, data2, label='Series 2')
plt.plot(dates, data3, label='Series 3')
plt.legend()
plt.show()
Attempts:
2 left
💡 Hint

Look for a line plot that uses dates on the x-axis and includes a legend.

❓ Predict Output
intermediate
1:30remaining
Output of multiple time series plot code

What will be the output type of the following code snippet?

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

dates = pd.date_range('2023-01-01', periods=3)
data1 = [1, 2, 3]
data2 = [3, 2, 1]

fig, ax = plt.subplots()
ax.plot(dates, data1, label='A')
ax.plot(dates, data2, label='B')
ax.legend()
plt.show()
AA scatter plot with points for data1 and data2
BA line plot with two lines labeled 'A' and 'B' over the dates
CA bar chart comparing data1 and data2
DA pie chart showing proportions of data1 and data2
Attempts:
2 left
💡 Hint

Look at the ax.plot calls and the use of legend().

❓ data_output
advanced
2:00remaining
Resulting DataFrame after merging multiple time series

Given two time series DataFrames with different date ranges, what is the shape of the merged DataFrame when merged on date with an outer join?

Matplotlib
import pandas as pd

df1 = pd.DataFrame({'date': pd.date_range('2023-01-01', periods=3), 'value1': [10, 20, 30]})
df2 = pd.DataFrame({'date': pd.date_range('2023-01-02', periods=3), 'value2': [15, 25, 35]})
merged = pd.merge(df1, df2, on='date', how='outer')
A(4, 3)
B(6, 3)
C(5, 3)
D(3, 3)
Attempts:
2 left
💡 Hint

Count unique dates after combining both date ranges with outer join.

🔧 Debug
advanced
1:30remaining
Identify the error in multiple time series plotting code

What error will this code raise?

Matplotlib
import matplotlib.pyplot as plt
import pandas as pd

dates = pd.date_range('2023-01-01', periods=4)
data1 = [1, 2, 3]
data2 = [4, 5, 6, 7]

plt.plot(dates, data1, label='Series 1')
plt.plot(dates, data2, label='Series 2')
plt.legend()
plt.show()
AValueError: x and y must have same first dimension
BTypeError: unsupported operand type(s) for +: 'int' and 'str'
CNo error, plots successfully
DIndexError: list index out of range
Attempts:
2 left
💡 Hint

Check if the x and y data lengths match for each plot call.

🚀 Application
expert
2:30remaining
Calculate correlation between multiple time series

You have three time series of equal length. Which code correctly calculates the pairwise Pearson correlation matrix?

Matplotlib
import pandas as pd
import numpy as np

np.random.seed(0)
data = pd.DataFrame({
    'A': np.random.randn(5),
    'B': np.random.randn(5),
    'C': np.random.randn(5)
})
Adata.corrwith(data['A'])
Bdata.cov()
Cdata.corr(method='pearson')
Ddata.corr(method='spearman')
Attempts:
2 left
💡 Hint

Look for the method that computes Pearson correlation matrix for all columns.

Practice

(1/5)
1. What is the main purpose of plotting multiple time series on the same graph using matplotlib?
easy
A. To make the graph load faster
B. To create separate graphs for each time series
C. To hide the data labels for clarity
D. To visually compare trends and differences between series over time

Solution

  1. Step 1: Understand the purpose of multiple time series plots

    Plotting multiple lines on one graph helps us see how different series change over time side by side.
  2. Step 2: Compare options with this purpose

    Only To visually compare trends and differences between series over time describes this visual comparison goal correctly.
  3. Final Answer:

    To visually compare trends and differences between series over time -> Option D
  4. Quick Check:

    Multiple time series comparison = Visual comparison [OK]
Hint: Multiple lines on one plot show trends side by side [OK]
Common Mistakes:
  • Thinking multiple plots are created instead of one combined plot
  • Ignoring the importance of labels and legends
  • Believing it speeds up graph loading
2. Which of the following matplotlib code snippets correctly plots two time series series1 and series2 on the same graph with labels?
easy
A. plt.plot(series1, label='Series 1') plt.legend() plt.show()
B. plt.plot(series1) plt.plot(series2) plt.show()
C. plt.plot(series1, label='Series 1') plt.plot(series2, label='Series 2') plt.legend() plt.show()
D. plt.plot(series1, label='Series 1') plt.plot(series2, label='Series 2') plt.show()

Solution

  1. Step 1: Check for plotting both series with labels

    plt.plot(series1, label='Series 1') plt.plot(series2, label='Series 2') plt.legend() plt.show() plots both series and adds labels for each.
  2. Step 2: Verify legend call to show labels

    plt.plot(series1, label='Series 1') plt.plot(series2, label='Series 2') plt.legend() plt.show() calls plt.legend() to display labels on the graph.
  3. Final Answer:

    Code that plots both series with labels and shows legend -> Option C
  4. Quick Check:

    Plot both + labels + legend = plt.plot(series1, label='Series 1') plt.plot(series2, label='Series 2') plt.legend() plt.show() [OK]
Hint: Always add labels and call plt.legend() to show them [OK]
Common Mistakes:
  • Forgetting to call plt.legend() so labels don't appear
  • Plotting only one series instead of both
  • Not adding labels to each series
3. What will be the output of this code snippet?
import matplotlib.pyplot as plt
series1 = [1, 3, 2, 4]
series2 = [2, 1, 3, 5]
plt.plot(series1, label='A')
plt.plot(series2, label='B')
plt.legend()
plt.show()
medium
A. A graph with two lines labeled 'A' and 'B' showing series1 and series2
B. A graph with one line showing the sum of series1 and series2
C. A graph with two lines but no labels
D. SyntaxError due to missing import

Solution

  1. Step 1: Analyze the plotting commands

    Two lines are plotted: series1 with label 'A' and series2 with label 'B'.
  2. Step 2: Check legend and show calls

    Calling plt.legend() displays the labels on the graph.
  3. Final Answer:

    A graph with two lines labeled 'A' and 'B' showing series1 and series2 -> Option A
  4. Quick Check:

    Two labeled lines plotted = A graph with two lines labeled 'A' and 'B' showing series1 and series2 [OK]
Hint: Labels appear only if plt.legend() is called [OK]
Common Mistakes:
  • Thinking lines are summed instead of plotted separately
  • Forgetting plt.legend() hides labels
  • Assuming syntax error without import
4. The following code is intended to plot two time series with labels, but the legend does not appear. What is the error?
import matplotlib.pyplot as plt
series1 = [1, 2, 3]
series2 = [3, 2, 1]
plt.plot(series1, label='First')
plt.plot(series2, label='Second')
plt.show()
medium
A. Missing plt.legend() call to display the legend
B. Labels are incorrectly assigned inside plt.plot()
C. plt.show() should be called before plotting
D. series2 should be plotted before series1

Solution

  1. Step 1: Check for legend display code

    The code does not call plt.legend(), so labels won't show.
  2. Step 2: Confirm label usage is correct

    Labels are correctly passed in plt.plot(), so no issue there.
  3. Final Answer:

    Missing plt.legend() call to display the legend -> Option A
  4. Quick Check:

    Legend missing without plt.legend() [OK]
Hint: Always add plt.legend() to show labels on plot [OK]
Common Mistakes:
  • Assuming labels show automatically without legend call
  • Thinking order of plotting affects legend display
  • Calling plt.show() too early
5. You have three time series with different lengths:
series1 = [1, 2, 3, 4], series2 = [2, 3, 4], series3 = [1, 3, 5, 7, 9].
How can you correctly plot all three on the same graph to compare them over time?
hard
A. Plot all series using the length of the longest series only
B. Plot each series with its own x-axis range matching its length, then add labels and legend
C. Pad shorter series with zeros to match the longest series length before plotting
D. Plot only the shortest series to avoid errors

Solution

  1. Step 1: Understand different lengths require matching x-axis

    Each series must be plotted with x values matching its length to avoid misalignment.
  2. Step 2: Plot each series with its own x range and add labels

    Use range(len(series)) for x-axis, plot all, then add labels and legend.
  3. Final Answer:

    Plot each series with its own x-axis range matching its length, then add labels and legend -> Option B
  4. Quick Check:

    Match x-axis length per series + labels = Plot each series with its own x-axis range matching its length, then add labels and legend [OK]
Hint: Use range(len(series)) for x-axis of each series [OK]
Common Mistakes:
  • Plotting all series without adjusting x-axis causes misaligned lines
  • Padding with zeros changes data meaning
  • Ignoring series length differences
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