Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
How can I draw inline line labels in Matplotlib?
Drawing inline labels in Matplotlib helps create cleaner plots by placing labels directly on the lines instead of using a separate legend box. The labellines package provides the labelLines() method to achieve this effect.
Installation
First, install the required package ?
pip install matplotlib-label-lines
Basic Example
Here's how to create a plot with inline labels ?
import numpy as np
import matplotlib.pyplot as plt
from labellines import labelLines
# Set figure size
plt.figure(figsize=(8, 4))
# Create data
X = np.linspace(0, 1, 500)
A = [1, 2, 5, 10, 20]
# Plot multiple lines with labels
for a in A:
plt.plot(X, np.arctan(a*X), label=str(a))
# Add inline labels to all lines
labelLines(plt.gca().get_lines(), zorder=2.5)
plt.title('Inline Line Labels Example')
plt.xlabel('X values')
plt.ylabel('arctan(a*X)')
plt.grid(True, alpha=0.3)
plt.show()
Customizing Label Positions
You can control where labels appear on each line ?
import numpy as np
import matplotlib.pyplot as plt
from labellines import labelLines
plt.figure(figsize=(8, 4))
# Create data
x = np.linspace(0, 10, 100)
lines_data = {
'sin(x)': np.sin(x),
'cos(x)': np.cos(x),
'sin(2x)': np.sin(2*x)
}
# Plot lines
for label, y_data in lines_data.items():
plt.plot(x, y_data, label=label)
# Add labels at specific positions (0.2, 0.5, 0.8 along the line)
labelLines(plt.gca().get_lines(), xvals=[2, 5, 8])
plt.title('Custom Label Positions')
plt.xlabel('X values')
plt.ylabel('Y values')
plt.grid(True, alpha=0.3)
plt.show()
Parameters
| Parameter | Description | Default |
|---|---|---|
lines |
List of line objects to label | Required |
xvals |
X positions for labels | Auto-calculated |
zorder |
Drawing order (higher = on top) | 2.5 |
align |
Label alignment | True |
Benefits Over Traditional Legends
- Space efficient − No separate legend box needed
- Clear association − Labels are directly on the lines
- Customizable positioning − Control exact label placement
- Better readability − Especially useful with many lines
Conclusion
Inline line labels using labelLines() provide a cleaner alternative to traditional legends. Install the matplotlib-label-lines package and use labelLines(plt.gca().get_lines()) to automatically place labels on your plot lines.
Advertisements
