In today data visualization we’ll show hot you can quickly add label to data points to a chart that would like to display. We’ll show how to work with labels in both Matplotlib (using a simple scatter chart) and Seaborn (using a lineplot).
Add labels to Matplotlib and Seaborn plots
Use the plt.annotate() function in order to add text labels to your scatter points in matplotlib and Searborn charts. Here’s a quick example:
for i, label in enumerate (data_labels):
plt.annotate(label, (x_position, y_position))
Step #1: Import Seaborn and Matplotlib
We’ll start by importing the Data Analysis and Visualization libraries: Pandas, Matplotlib and Seaborn.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Step #2: Create data for your plot
We’ll now define a very simple example dataset that you can use to follow along:
languages = ['C#', 'Go', 'Ruby', 'SQL']
avg_salary = [78, 83, 84, 75]
candidates = [80,87,79, 75]
Step #3: Adding scatter label texts with Matplotlib
In this example we’ll first render our plot and then use the plt.text() method to add the point labels at the specific required coordinates on the graph.
# Draw the graph
plt.scatter(avg_salary, candidates);
# Loop through the data points
for i, language in enumerate (languages):
plt.text(avg_salary[i]+0.2, candidates[i]+0.2, language)
plt.xlim (70, 90)
plt.ylim (70, 90);
Here is our simple Scatter including the plot label points text:
Step #4: Seaborn text for data point labels
In this example, we’ll first generate a DataFrame and use the very powerful Seaborn library to plot the chart and annotate the plot points.
# Define Dataframe
hr = pd.DataFrame(dict(language =languages,avg_salary=avg_salary, candidates=candidates ))
# Define variables for chart
languages = hr['language']
avg_salary = hr['avg_salary']
candidates = hr['candidates']
Note the usage of kwargs (Keyword Arguments) to pass the Line2D styling property values. In our case we customize the mark size and type, line width, line color and style.
# Keyword arguments for styling the plot
kwargs = dict (linestyle='--', color='b', marker ='o', linewidth=1.2, markersize=13)
# Draw the plot
line = sns.lineplot(x = 'avg_salary', y = 'candidates', data=hr,**kwargs)
# Annotate label points
for i, language in enumerate (languages):
plt.annotate(language, (avg_salary[i]+0.7, candidates[i]+0.5) )
line.set_xlim (70, 90)
line.set_ylim (70, 90)
Additional Learning
How to create charts showing Numpy array data with matplotlib?