Аннотации, текст и опорные линии
Указывайте на важные значения с ax.annotate, добавляйте заметки с ax.text и отмечайте цели с axhline.
Введение
Хороший график подсказывает читателю, куда смотреть. ax.annotate пишет подпись со стрелкой к точке данных, ax.text размещает произвольный текст, а ax.axhline или ax.axvline рисует опорную линию, например среднее или цель.
xy - точка, на которую указывает стрелка, а xytext - место подписи; arrowprops рисует стрелку. На графике с текстовыми категориями позиции x равны 0, 1, 2 и так далее, поэтому лучший месяц находится в x = best. axhline проводит среднее через весь график, а ax.text объясняет, что значит пунктир.
Интерактивный визуализатор
Выберите точку для аннотации, уберите стрелку и линию среднего и посмотрите, какая строка кода рисует каждую часть.
Запускаемый пример Matplotlib
Matplotlib
main.py
import matplotlib.pyplot as plt
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
sales = [12, 15, 14, 22, 19, 17]
best = sales.index(max(sales))
average = sum(sales) / len(sales)
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(months, sales, marker="o")
ax.annotate(f"Best month: {sales[best]}k", xy=(best, sales[best]), xytext=(best + 0.5, sales[best] + 1.5),
arrowprops=dict(arrowstyle="->"))
ax.axhline(average, color="gray", linestyle="--")
ax.text(0, average + 0.4, f"average {average:.1f}k", color="gray")
ax.set_ylim(10, 25)
ax.set_title("Sales by month")
plt.show()
