Legends are crucial for effectively communicating the meaning behind your visualizations. In this tutorial, we will cover different ways to customize legends in Matplotlib to enhance your data visualizations. ## Getting Started First, let's import the necessary libraries and create a simple plot example so we can work with it.
import matplotlib.pyplot as plt import numpy as np # Sample Data x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) # Create Plot fig, ax = plt.subplots() ax.plot(x, y1, label='Sine Wave') ax.plot(x, y2, label='Cosine Wave') ax.legend() plt.show()
Now we have a basic plot with default legends. Let's dive into customizing this legend. ## Customizing Legend Location You can easily change the location of the legend using the `loc` parameter. The `loc` parameter takes a string or a tuple to decide the location.
import matplotlib.pyplot as plt import numpy as np # Sample Data x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig, ax = plt.subplots() ax.plot(x, y1, label='Sine Wave') ax.plot(x, y2, label='Cosine Wave') ax.legend(loc='upper right') # Change legend position plt.show()
## Adding a Title to the Legend You can add a title to your legend to provide extra context.
import matplotlib.pyplot as plt import numpy as np # Sample Data x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig, ax = plt.subplots() ax.plot(x, y1, label='Sine Wave') ax.plot(x, y2, label='Cosine Wave') legend = ax.legend(loc='upper right') legend.set_title('Waves') # Set legend title plt.show()
## Customizing Legend Font Size You can customize the font size and other properties of the legend text.
import matplotlib.pyplot as plt import numpy as np # Sample Data x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig, ax = plt.subplots() ax.plot(x, y1, label='Sine Wave') ax.plot(x, y2, label='Cosine Wave') ax.legend(loc='upper right', fontsize='large', title='Waves', title_fontsize='medium') plt.show()
## Customizing Legend Handles and Labels If you have multiple plot elements, you can specify which ones should appear in the legend.
import matplotlib.pyplot as plt import numpy as np # Sample Data x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig, ax = plt.subplots() line1, = ax.plot(x, y1, label='Sine Wave') line2, = ax.plot(x, y2, label='Cosine Wave') # Custom legend handles and labels ax.legend(handles=[line1], labels=['Only Sine']) plt.show()
## Customizing Legend Colors You can also customize the colors in the legend.
import matplotlib.pyplot as plt import numpy as np # Sample Data x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig, ax = plt.subplots() ax.plot(x, y1, label='Sine Wave', color='blue') ax.plot(x, y2, label='Cosine Wave', color='green') # Customizing legend colors legend = ax.legend() for text, line in zip(legend.get_texts(), legend.get_lines()): text.set_color(line.get_color()) plt.show()
## Using Legend Outside the Plot Sometimes you might need to place the legend outside the actual plot area for clarity.
import matplotlib.pyplot as plt import numpy as np # Sample Data x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig, ax = plt.subplots() ax.plot(x, y1, label='Sine Wave') ax.plot(x, y2, label='Cosine Wave') # Place legend outside of the plot ax.legend(loc='center left', bbox_to_anchor=(1, 0.5)) plt.show()
## Conclusion In this tutorial, we explored different ways to customize legends in Matplotlib to enhance the readability and interpretation of data visualizations.