Как аннотировать диаграммы рассеяния Matplotlib


Вы можете использовать следующий базовый синтаксис для аннотирования точечных диаграмм в Matplotlib:

#add 'my text' at (x, y) coordinates = (6, 9.5)
plt.text (6, 9.5, 'my text')

В следующих примерах показано, как использовать этот синтаксис на практике.

Создайте базовую диаграмму рассеяния

В следующем коде показано, как создать базовую диаграмму рассеяния с помощью Matplotlib:

import matplotlib.pyplot as plt

#create data
x = [3, 6, 8, 12, 14]
y = [4, 9, 14, 12, 9]

#create scatterplot
plt.scatter (x, y)

Аннотировать одну точку

Мы можем использовать следующий код, чтобы добавить аннотацию к одной точке графика:

import matplotlib.pyplot as plt

#create data
x = [3, 6, 8, 12, 14]
y = [4, 9, 14, 12, 9]

#create scatterplot
plt.scatter (x, y)

#add text 'Here' at (x, y) coordinates = (6, 9.5)
plt.text (6, 9.5, 'Here')

Аннотировать несколько точек

Мы можем использовать следующий код, чтобы добавить аннотации к нескольким точкам на графике:

import matplotlib.pyplot as plt

#create data
x = [3, 6, 8, 12, 14]
y = [4, 9, 14, 12, 9]

#create scatterplot
plt.scatter (x, y)

#add text to certain points
plt.text (3, 4.5, 'This')
plt.text (6, 9.5, 'That')
plt.text (8.2, 14, 'Those')

Аннотировать все точки

Мы можем использовать следующий код, чтобы добавить аннотации к каждой точке графика:

import matplotlib.pyplot as plt

#create data
x = [3, 6, 8, 12, 14]
y = [4, 9, 14, 12, 9]
labs = ['A', 'B', 'C', 'D', 'E']

#create scatterplot
plt.scatter (x, y)

#use for loop to add annotations to each point in plot 
for i, txt in enumerate(labs):
 plt.annotate (txt, (x[ i ], y[ i ])) 

По умолчанию аннотации размещаются непосредственно поверх точек на диаграмме рассеивания, а размер шрифта по умолчанию равен 10.

В следующем коде показано, как настроить обе эти настройки, чтобы аннотации располагались немного правее точек, а размер шрифта был немного больше:

import matplotlib.pyplot as plt

#create data
x = [3, 6, 8, 12, 14]
y = [4, 9, 14, 12, 9]
labs = ['A', 'B', 'C', 'D', 'E']

#create scatterplot
plt.scatter (x, y)

#use for loop to add annotations to each point in plot 
for i, txt in enumerate(labs):
 plt.annotate (txt, (x[ i ]+.25, y[ i ]), fontsize=12) 

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в Matplotlib:

Как добавить легенду к диаграмме рассеивания в Matplotlib
Как раскрасить диаграмму рассеяния по значению в Matplotlib
Как добавить среднюю линию к графикам в Matplotlib