установите значения на основе визуализации точечной диаграммы python

#python #python-3.x #scatter-plot #scatter

Вопрос:

Можно ли установить метки для переменных, если они расположены в каком-либо разделе точечной диаграммы? или только вручную?

Каждая цветная точка является переменной.

вот что я получаю с помощью точечной диаграммы

В результате я хотел бы получить это с помощью какого-нибудь скрипта на python, но я не мог понять, как:

 var   | label
-------------
3 65  | low
3 40  | low
7 180 | high
     ...
5 40  | undervalued
 

Ответ №1:

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

 import matplotlib.pyplot as plt

# So starting from your example
y = [65, 40, 180, 40]
x = [3, 3, 7, 5]
labels = ['low', 'low', 'high', 'undervalued']

fig, ax = plt.subplots()
ax.scatter(x, y)

for i, label in enumerate(labels):
    ax.annotate(label, (x[i], y[i]))
 

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

 import matplotlib.pyplot as plt

# Based on the image you provided
def get_label(x,y):
    if x<4 and y<100:
        return 'low'
    elif x<4 and y>=100:
        return 'overvalued'
    elif x>=4 and y<100:
        return 'undervalued'
    else:
        return 'high'

y = [65, 40, 180, 40]
x = [3, 3, 7, 5]

fig, ax = plt.subplots()
ax.scatter(x, y)

for x_current, y_current in zip(x,y):
    ax.annotate(get_label(x_current, y_current), (x_current, y_current))
 

Вы можете найти дополнительные сведения о форматировании в документации.