Добавление горизонтальной линии на график в Python
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для рисования горизонтальной линии на графике воспользуйтесь функцией plt.axhline()
из библиотеки matplotlib:
import matplotlib.pyplot as plt
# Предполагаем, что график уже создан
# plt.plot(...)
plt.axhline(y=<значение>, color='<цвет>', linestyle='<стиль>')
plt.show()
В данном коде <значение>
указывает координату по оси Y для расположения линии, <цвет>
задает цвет линии (например, 'r'
для красного), <стиль>
определяет стиль линии (например, '--'
для пунктирной). Таким образом, вы сможете добавить стилизованную горизонтальную линию на требуемой высоте.
Углубляемся в тему
Рисование горизонтальной линии могут казаться простым заданием, однако здесь имеются свои нюансы. Давайте более подробно разберем все возможности.
Настройка линии
Функция plt.axhline()
отлично работает с любым типом графиков. Если вы привыкли к объектным интерфейсам, то метод ax.hlines()
предложит больше вариантов для настройки:
fig, ax = plt.subplots()
ax.hlines(y=2.5, xmin=0, xmax=10, colors='green', linestyles='dashdot')
# Мы заботимся о природе, даже наш код 'зеленый'
Линии на временных рядах и столбчатых диаграммах
Временные ряды и столбчатые диаграммы имеют свои особенности. Убедитесь, что параметры xmin
и xmax
во временных рядах соответствуют объектам datetime
, чтобы горизонтальная линия корректно совпадала с временными интервалами.
Для столбчатых графиков рекомендуется выровнять xmin
и xmax
в соответствии с индексами столбцов, а не с их физическими координатами или подписями.
Интеграция с pandas и seaborn
С DataFrame Pandas возможно вызвать метод .axhline()
непосредственно после создания графика:
df.plot(kind='line')
plt.axhline(y=2.5, color='purple', linestyle='-')
# Purple rain, purple line...
Seaborn также предлагает удобный способ добавления горизонтальных линий, облагораживая визуализацию данных.
Устраняем сложности
Сглаживание линий
Быть идеально гладким – это не только отсылка к Sade; кривые на графике иногда требуют сглаживания. Если вы хотите показать тренды или закономерности, рассмотрите возможность использования UnivariateSpline
из scipy
в сочетании с массивами numpy
.
Осмысленные комментарии
Не забывайте комментировать код, особенно в составных графиках. Это поможет сделать вашу работу более понятной как для вас самого в будущем, так и для коллег.
Контроль границ оси Y
Правильная настройка границ оси Y важна для того, чтобы они включали ваши горизонтальные линии. Воспользуйтесь функцией pylab.ylim()
или методом set_ylim()
осевого объекта для корректировки.
Визуализация
Рассмотрим пример: выборку данных на графике представим в виде свежеприготовленного яблочного пирога:
Данные: [1\.1, 2.3, 3.0, 2.7, 1.8, 3.3]
Добавим постоянную горизонтальную линию:
plt.axhline(y=2.5, color='r', linestyle='-') # Рисуем алую линию на уровне y=2.5
Вот как это выглядит:
| 🍏 |
| 🍎 |
| | 🍏
________|🍒🍒🍒🍒🍒🍒|________
| | 🍎
| 🍏 |
| 🍏 |
# Великолепная алая линия на уровне y=2.5, представляющая среднюю величину наших данных.
Горизонтальная линия служит опорной точкой для сравнения различных данных.
Применяйте эти советы и приемы
Несколько линий
Добавляйте несколько горизонтальных линий: они могут символизировать различные критические значения или важные показатели.
plt.hlines(y=[1\.5, 2.5, 3.5], xmin=0, xmax=len(data)-1, colors=['pink', 'red', 'maroon'])
# Забудьте о светофорах, вот истинные бутоны анализа данных!
Детальный контроль над осями
Для данных с переменной осью X создайте массив numpy
нужного размера, чтобы корректно отобразить xmin
и xmax
.
Обращайтесь за помощью
Если вам требуются пользовательские решения, не стесняйтесь обращаться к официальной документации matplotlib и множеству других материалам для получения примеров, советов и рекомендаций.
Полезные материалы
- matplotlib.axes.Axes.axhline — документация Matplotlib 3.8.2 — официальная документация на
axhline
от Matplotlib. - Визуализация графиков — документация pandas 2.2.0 — инструкции по интеграции рисования горизонтальных линий в Pandas.
- seaborn.lineplot — документация seaborn 0.13.2 — стратегии улучшения визуализации данных с помощью горизонтальных линий в Seaborn.
- Линейный график — примеры того, как добавить горизонтальную линию к линейному графику.
- matplotlib.pyplot.axhline() в Python – GeeksforGeeks — руководство по использованию функции
plt.axhline()
для рисования горизонтальных линий.