Matplotlib Legend
Matplotlib is a popular Python library for creating static, animated, and interactive visualizations in Python. One useful feature of matplotlib is the ability to add legends to plots, which help to identify the different elements in a plot. In this article, we will explore how to create and customize legends in matplotlib with detailed examples.
Basic Usage
To add a legend to a matplotlib plot, you can use the legend
function. Here is a simple example of how to add a legend to a plot:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1, label='Prime numbers')
plt.plot(x, y2, label='Square numbers')
plt.legend()
plt.show()
Output:
In the above code snippet, we have two sets of data, y1
representing prime numbers and y2
representing square numbers. We use the label
parameter in the plot
function to assign labels to each line. The legend
function is then called to display the legend on the plot.
Customizing Legends
Placement and Position
By default, matplotlib places the legend at the best location in the plot to avoid overlapping with data. However, you can also specify the position of the legend using the loc
parameter. Here are some common locations for the legend:
- ‘upper right’
- ‘upper left’
- ‘lower right’
- ‘lower left’
- ‘center’
- ‘best’
plt.legend(loc='upper right')
Title and Labels
You can add a title to the legend using the title
parameter. You can also customize the font size and style of the legend labels using the fontsize
and fontstyle
parameters.
plt.legend(title='Legend Title', fontsize='large', title_fontstyle='italic')
Background Color and Border
You can change the background color of the legend using the facecolor
parameter. Additionally, you can add a border to the legend using the edgecolor
and linewidth
parameters.
plt.legend(facecolor='lightgray', edgecolor='black', linewidth=1)
Shadow and Transparency
You can add a shadow effect to the legend using the shadow
parameter. You can also adjust the transparency of the legend using the alpha
parameter.
plt.legend(shadow=True, alpha=0.8)
Adding Multiple Legends
You can add multiple legends to a plot by calling the legend
function multiple times with different labels.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1)
plt.plot(x, y2)
plt.legend(['Legend A', 'Legend B'])
plt.show()
Output:
Custom Legend Markers
You can customize the markers used in the legend by specifying the marker
parameter. Here is an example of using different markers for each legend entry:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1, marker='o', label='Circle marker')
plt.plot(x, y2, marker='s', label='Square marker')
plt.legend()
plt.show()
Output:
Advanced Legend Customization
Legend Title
You can add a title to the legend using the title
parameter. Here is an example of how to add a title to the legend:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend(title='Legend Title')
plt.show()
Output:
Legend Font Properties
You can customize the font properties of the legend using the prop
parameter. Here is an example of how to change the font size and style of the legend:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend(prop={'size': 12, 'style': 'italic'})
plt.show()
Output:
Custom Legend Labels
You can customize the labels of the legend using the labels
parameter. Here is an example of how to change the labels of the legend entries:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1)
plt.plot(x, y2)
plt.legend(labels=['Label 1', 'Label 2'])
plt.show()
Output:
Legend Border Properties
You can customize the border properties of the legend using the borderpad
, borderaxespad
, and labelspacing
parameters. Here is an example of how to adjust the border properties of the legend:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1)
plt.plot(x, y2)
plt.legend(borderpad=1, borderaxespad=1, labelspacing=2)
plt.show()
Legend Background Properties
You can customize the background color and transparency of the legend using the facecolor
and alpha
parameters. Here is an example of how to change the background color and transparency of the legend:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1)
plt.plot(x, y2)
plt.legend(facecolor='lightgray', alpha=0.8)
plt.show()
Legend Title Properties
You can customize the font properties of the legend title using the title_fontsize
, title_fontweight
, and title_color
parameters. Here is an example of how to change the title properties of the legend:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1)
plt.plot(x, y2)
plt.legend(title='Legend Title', title_fontsize='medium', title_fontweight='bold', title_color='blue')
plt.show()
Matplotlib Legend Conclusion
In this article, we explored how to create and customize legends in matplotlib. We learned how to add basic legends, customize the placement, position, font properties, background properties, and title properties of legends. We also covered advanced techniques for customizing legends, such as adding multiple legends, customizing legend markers, and adjusting border properties. With these examples, you should now have a good understanding of how to create beautiful and informative legends in your matplotlib plots.