A legend helps explain what each color or line means in a chart. Placing and styling it well makes the chart easier to understand.
Legend placement and styling in Matplotlib
plt.legend(loc='best', title='Legend Title', fontsize='small', frameon=True, shadow=False, fancybox=True)
loc controls where the legend appears (e.g., 'best', 'upper right').
You can style the legend with title, fontsize, and frame options.
plt.legend(loc='upper left')plt.legend(loc='best', fontsize='large', title='My Legend')
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.legend(frameon=False, shadow=True, fancybox=True)
This code plots two lines labeled 'Squares' and 'Primes'. The legend is placed in the upper left with a title, medium font size, a frame with shadow, and rounded corners.
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y1 = [1, 4, 9, 16] y2 = [2, 3, 5, 7] plt.plot(x, y1, label='Squares') plt.plot(x, y2, label='Primes') plt.legend(loc='upper left', title='Number Types', fontsize='medium', frameon=True, shadow=True, fancybox=True) plt.title('Legend Placement and Styling Example') plt.show()
Use loc='best' to let matplotlib choose the best spot automatically.
Use bbox_to_anchor with loc to place the legend outside the plot area.
Styling options like shadow and fancybox improve the legend's look.
Legends explain what each plot element means.
You can place legends inside or outside the plot using loc and bbox_to_anchor.
Styling options help make legends clear and visually appealing.
Practice
loc parameter control in a matplotlib legend?Solution
Step 1: Understand the role of
Thelocin legendlocparameter specifies where the legend appears on the plot, such as 'upper right' or 'lower left'.Step 2: Differentiate from other styling options
Other options control color, size, or line style, butloconly controls position.Final Answer:
The position of the legend on the plot -> Option DQuick Check:
Legend position = loc [OK]
- Confusing loc with color or font size
- Thinking loc changes plot markers
- Assuming loc controls line style
Solution
Step 1: Identify the correct parameter name
The correct parameter to set legend position isloc, notlocationorposition.Step 2: Use the correct string value
The valid string is 'lower left' with a space, not 'lower_left' with underscore.Final Answer:
plt.legend(loc='lower left') -> Option AQuick Check:
Correct syntax uses loc='lower left' [OK]
- Using 'location' instead of 'loc'
- Using underscores instead of spaces
- Using 'position' parameter which doesn't exist
import matplotlib.pyplot as plt plt.plot([1, 2, 3], label='Line A') plt.plot([3, 2, 1], label='Line B') plt.legend(loc='upper center', shadow=True, fontsize='small') plt.show()
Solution
Step 1: Analyze legend parameters
Theloc='upper center'places the legend at the top center.shadow=Trueadds a shadow behind the legend box.fontsize='small'sets the font size smaller than default.Step 2: Confirm no errors in parameters
All parameters are valid and supported by matplotlib.Final Answer:
Legend appears at the top center with a shadow and small font -> Option BQuick Check:
loc + shadow + fontsize = top center, shadow, small font [OK]
- Assuming fontsize='small' causes error
- Confusing loc='upper center' with bottom right
- Ignoring shadow parameter effect
import matplotlib.pyplot as plt plt.plot([1, 2, 3], label='A') plt.plot([3, 2, 1], label='B') plt.legend(loc='bottomright') plt.show()
Solution
Step 1: Check the loc parameter value
The valid location string is 'lower right', not 'bottomright'. 'bottomright' is not recognized by matplotlib.Step 2: Verify other parts of the code
Labels are correctly set, plt.legend() can be called after plotting, and plt.show() has parentheses.Final Answer:
The loc value 'bottomright' is invalid; should be 'lower right' -> Option CQuick Check:
Valid loc strings = 'lower right' not 'bottomright' [OK]
- Using invalid loc strings
- Thinking plt.legend() must come before plt.plot()
- Forgetting parentheses in plt.show()
Solution
Step 1: Understand placing legend outside plot
Usingloc='center right'withbbox_to_anchor=(1, 0.5)places the legend outside on the right side centered vertically.Step 2: Check styling parameters
Title 'Legend', font size 12 (string with units '12pt'), and shadow=True are correctly set.loc='right side'andloc='outside right'are invalid.Final Answer:
plt.legend(loc='center right', bbox_to_anchor=(1, 0.5), title='Legend', fontsize='12pt', shadow=True) -> Option AQuick Check:
loc + bbox_to_anchor + title + fontsize + shadow = correct legend outside right [OK]
- Using invalid loc like 'right side' or 'outside right'
- Passing fontsize as integer without units
- Forgetting bbox_to_anchor for outside placement
Ready to prove it?
Pass the test and this pattern moves unknown
