Рубрики
Без рубрики

Matplotlib: Нарисуйте вертикальные линии на графике

В этом уроке мы рассмотрим, как рисовать вертикальные линии на графике/оси Matplotlib в Python с помощью lines() и axvline () с практическими примерами.

Автор оригинала: David Landup.

Matplotlib: Нарисуйте вертикальные линии на графике

Вступление

Matplotlib – одна из наиболее широко используемых библиотек визуализации данных в Python. Большая часть популярности Matplotlib связана с его настройками – вы можете настроить практически любой элемент из его иерархии объектов .

В этом уроке мы рассмотрим как нарисовать вертикальную линию на графике Matplotlib , которая позволяет нам отмечать и выделять определенные области графика без масштабирования или изменения диапазона осей .

Создание сюжета

Давайте сначала создадим простой график с некоторыми случайными данными:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

plt.show()

Здесь мы использовали Numpy для генерации 150 случайных точек данных в диапазоне [0, 1) .

matplotlib строит случайные значения

Теперь, поскольку мы установили seed , мы можем воспроизвести это случайное изображение столько раз, сколько захотим. Например, давайте нарисуем вертикальные линии на 20 и 100 метки.

Есть два способа нарисовать линии, используя функции v lines() или axvline() экземпляра PyPlot. Естественно, вы также можете вызвать эти методы на объекте Axes .

Нарисуйте вертикальные линии на графике Matplotlib с помощью линий PyPlot.v()

Начнем с функции lines() :

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

ax.vlines([20, 100], 0, 1, linestyles='dashed', colors='red')

plt.show()

Функция vlines() принимает несколько аргументов – скалярный или 1D массив X-значений, на котором вы хотите нарисовать линии. Мы поставили [20, 100] , маркировка двух точек, хотя вы можете перейти от 0..n точек здесь. Затем аргументы ymin и ymax – это высота линий. Мы установили их так, чтобы они были из 0 чтобы 1 , так как это также распределение вызова np.random.rand () . Затем вы можете установить стили, такие как стили линий или цвета , которые принимают типичные параметры стиля Matplotlib.

Запуск этого кода приведет к:

добавление вертикальных линий в график matplotlib с помощью линий()

У нас есть две вертикальные линии, которые пунктирно, красным цветом, на 20 и 100 точки на оси X.

Эта функция позволяет нам установить ymin и ymax в конкретных значениях, в то время как axvline() позволяет нам выбрать высоту в процентах, или мы просто позволяем ей строить график снизу вверх по умолчанию.

Эта функция пригодится, например, когда вы хотите сделать линии короче или длиннее. Давайте изменим диапазон нашей оси Y, чтобы включить вид из -10 чтобы 10 , вместо 0 и 1 . Наши случайные данные по-прежнему будут находиться в диапазоне от [0, 1) , поэтому мы лучше посмотрим на них с другой точки зрения:

fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

ax.set_ylim(-10, 10)
ax.vlines([20, 100], -2, 2, linestyles='dashed', colors='red')
изменение диапазона осей и построение вертикальных линий на графике matplotlib

Здесь мы установили, что линии должны быть длиннее, чем диапазон самих случайных данных, но все же намного меньше, чем размер самих осей .

Нарисуйте вертикальные линии на графике Matplotlib с помощью PyPlot.axvline()

Теперь давайте взглянем на функцию axvline() :

fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

ax.set_ylim(-10, 10)
ax.axvline(20, color='red')
ax.axvline(100, color='red')

plt.show()

У него есть несколько ограничений, которых нет у другой функции, например, возможность строить график только в одной точке одновременно. Если мы хотим построить график на нескольких точках, например 20 и 100 , нам придется вызвать эту функцию дважды.

Он также на самом деле не позволяет нам указывать стиль line like lines() let us, хотя по умолчанию он не требует аргументов ymin и ymax . Если вы опустите их, как это сделали мы, они просто будут сверху вниз от Осей :

нарисуйте вертикальную линию на графике matplotlib axvline

Однако вы можете изменить высоту, если хотите – на этот раз, однако, вы измените высоту в процентах. Эти проценты учитывают верхнюю и нижнюю части осей , поэтому 0% будет находиться в самом низу, а 100% - в самом верху. Давайте проведем линию, охватывающую от 50% до 80%:

fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

ax.set_ylim(-10, 10)
ax.axvline(20, 0.8, 0.5, color='red')
ax.axvline(100, 0.8, 0.5, color='red')

Это производит:

установите процентную высоту вертикального участка на matplotlib axvline

Вывод

В этом уроке мы рассмотрели как рисовать вертикальные линии на графике Matplotlib .

Если вы заинтересованы в визуализации данных и не знаете, с чего начать, обязательно ознакомьтесь с нашей связкой книг on :

Визуализация данных в Python с Matplotlib и Pandas – это книга, предназначенная для того, чтобы познакомить абсолютных новичков с Pandas и Matplotlib, обладающих базовыми знаниями Python, и позволить им создать прочную основу для продвинутой работы с библиотеками тезисов-от простых сюжетов до анимированных 3D-сюжетов с интерактивными кнопками.

Он служит углубленным руководством, которое научит вас всему, что вам нужно знать о пандах и Matplotlib, включая то, как создавать типы сюжетов, которые не встроены в саму библиотеку.

Визуализация данных в Python , книга для начинающих и промежуточных разработчиков Python, проведет вас через простые манипуляции с данными с Пандами, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет вам, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. Более конкретно, в течение 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.

Он служит уникальным практическим руководством по визуализации данных, в изобилии инструментов, которые вы могли бы использовать в своей карьере.