@nyslockfake

Установление значений для маркеров в Matplotlib?

Здравствуйте! Такая проблема: не могу найти как поставить значение точкам в таблице.

import matplotlib.pyplot as plt
import numpy as np


fig, ax = plt.subplots()

x = ['Август', 'Сентябрь', 'Январь']
y = [40, 46.98, 465]

ax.set_xlabel('Месяц')
ax.set_ylabel('Цена')
ax.set_title('Зарплата')
ax.grid()
ax.plot(x, y)

plt.savefig('saved_figure.png')


При этом получается вот так:

63bd80d313c9a267556197.png

Но для моей же цели нужно вот так:

63bd80dcb168c578187228.png

Надеюсь на вашу помощь! Вроде должны быть просто, ведь люди делают очень сложные таблицы, а тут такая простота...
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 2
Maksim_64
@Maksim_64
Data Analyst
это просто в функцию plot добавляем параметер '-o' и все.
ax.plot(x, y,'-o')
Извиняюсь неправильно прочитал вопрос увидел маркеры и все, а вы хотите значения подставить. Сейчас отредактирую.
ax.plot(x,y,'-o')
for i,v in enumerate(y):
    ax.text(x[i],y[i],v,fontsize=16,va='top')
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Я бы использовал pyplot.text() или pyplot.annotate() (ну или соответствующие методы ax).
Они позволяют указывать координаты текста в единицах данных (т.е. в координатных осях на твоём графике). А маркеры по умолчанию ставятся на каждую точку данных, так что привязать текст к тем же точкам что и маркеры будет тривиально - просто цикл по данным и вызов метода на каждую позицию.
for xv, yv in zip(x, y):
    caption = f'{yv:.0f}'  # тут генеришь надпись так, как тебе надо
    ax.text(xv, yv, caption, ha='center', va='top')  # по умолчанию координаты задаются по данным
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы