0
0
Matplotlibdata~20 mins

Custom legend entries in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Custom Legend Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What does this code output?
Consider the following matplotlib code that creates a plot and a custom legend entry. What will be the number of legend entries shown?
Matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

plt.plot([1, 2, 3], [4, 5, 6], label='Line 1')
custom_patch = mpatches.Patch(color='red', label='Custom Patch')
plt.legend(handles=[custom_patch])
plt.close()
A3
B1
C0
D2
Attempts:
2 left
💡 Hint
The legend uses only the handles provided explicitly.
data_output
intermediate
2:00remaining
What labels appear in the legend?
Given this code snippet, which labels will appear in the legend?
Matplotlib
import matplotlib.pyplot as plt
import matplotlib.lines as mlines

line1, = plt.plot([1, 2, 3], [1, 4, 9], label='Squares')
line2, = plt.plot([1, 2, 3], [1, 8, 27], label='Cubes')
custom_line = mlines.Line2D([], [], color='green', marker='o', linestyle='None', label='Custom Point')
plt.legend(handles=[line1, custom_line])
plt.close()
ASquares, Custom Point
BSquares, Cubes, Custom Point
CCubes, Custom Point
DSquares, Cubes
Attempts:
2 left
💡 Hint
Only the handles passed to legend are shown.
visualization
advanced
2:30remaining
Identify the correct legend appearance
Which option shows a legend with two entries: a blue line labeled 'Data' and a red square labeled 'Threshold'?
Matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.lines as mlines

plt.plot([0, 1, 2], [2, 3, 4], color='blue', label='Data')
red_square = mpatches.Patch(color='red', label='Threshold')
plt.legend(handles=[mlines.Line2D([], [], color='blue', label='Data'), red_square])
plt.close()
ALegend with a blue line labeled 'Data' only
BLegend with a red square labeled 'Threshold' only
CLegend with a blue line labeled 'Data' and a red square labeled 'Threshold'
DLegend with no entries
Attempts:
2 left
💡 Hint
Custom legend entries can combine Line2D and Patch objects.
🔧 Debug
advanced
2:00remaining
Why does this custom legend not show the label?
This code tries to add a custom legend entry but the label does not appear. What is the cause?
Matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

plt.plot([1, 2, 3], [3, 2, 1])
custom_patch = mpatches.Patch(color='orange')
plt.legend(handles=[custom_patch])
plt.close()
ALegend requires plt.show() to display labels
BThe plot line must be included in handles to show any legend
CThe color 'orange' is invalid and causes the label to hide
DThe Patch object lacks a label argument, so no label appears
Attempts:
2 left
💡 Hint
Check if the legend entries have labels.
🚀 Application
expert
3:00remaining
Create a custom legend with mixed marker and line styles
You want a legend with three entries: a green dashed line labeled 'Trend', a red circle marker labeled 'Data Point', and a blue square patch labeled 'Region'. Which code snippet correctly creates this custom legend?
A
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import matplotlib.patches as mpatches

trend_line = mlines.Line2D([], [], color='green', linestyle='--', label='Trend')
data_point = mlines.Line2D([], [], color='red', marker='o', linestyle='None', label='Data Point')
region_patch = mpatches.Patch(color='blue', label='Region')
plt.legend(handles=[trend_line, data_point, region_patch])
B
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import matplotlib.patches as mpatches

trend_line = mlines.Line2D([], [], color='green', linestyle='-', label='Trend')
data_point = mpatches.Circle((0,0), radius=5, color='red', label='Data Point')
region_patch = mpatches.Rectangle((0,0), 1, 1, color='blue', label='Region')
plt.legend(handles=[trend_line, data_point, region_patch])
C
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import matplotlib.patches as mpatches

trend_line = mlines.Line2D([], [], color='green', linestyle='--', label='Trend')
data_point = mlines.Line2D([], [], color='red', marker='o', label='Data Point')
region_patch = mpatches.Patch(color='blue', label='Region')
plt.legend(handles=[trend_line, data_point, region_patch])
D
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import matplotlib.patches as mpatches

trend_line = mlines.Line2D([], [], color='green', linestyle='--', label='Trend')
data_point = mlines.Line2D([], [], color='red', marker='o', linestyle='-', label='Data Point')
region_patch = mpatches.Patch(color='blue', label='Region')
plt.legend(handles=[trend_line, data_point, region_patch])
Attempts:
2 left
💡 Hint
Markers with no connecting line use linestyle='None'.