#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))
Вы можете найти дополнительные сведения о форматировании в документации.