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

Введение Matplotlib - одна из наиболее широко используемых библиотек визуализации данных в Python. Большая часть популярности Matplotlib связана с его параметрами настройки - вы можете настроить практически любой элемент из его иерархии объектов. В этом уроке мы рассмотрим, как нарисовать вертикальную линию на графике Matplotlib, которая позволяет нам отмечать и выделять определенные области графика без масштабирования или изменения диапазона оси [/ how-to-set- ось-диапазон-xlim-ylim-in-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

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

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

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

 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() принимает несколько аргументов - скаляр или одномерный массив значений X, на которых вы хотите нарисовать линии. Мы предоставили [20, 100] , отмечая две точки, хотя здесь вы можете перейти от 0 до 0..n точек. Затем ymin и ymax - это высота строк. Мы установили их значение от 0 до 1 , поскольку это также распределение np.random.rand() . Затем вы можете установить стили, такие как linestyles или colors , которые принимают типичные параметры стиля Matplotlib.

Выполнение этого кода приведет к:

добавить вертикальные линии на график matplotlib с помощью vlines(){.ezlazyload}

У нас есть две вертикальные линии, которые пунктирны красного цвета в 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{.ezlazyload}

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

Нарисуйте вертикальные линии на графике 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 , нам придется вызвать функцию дважды.

Он также не позволяет нам указывать linestyle например vlines() , хотя по умолчанию ymin и ymax Если вы их опустите, как у нас, они будут просто сверху вниз от Axes :

нарисовать вертикальную линию на оси графика графикаmatplotlib{.ezlazyload}

Однако вы можете изменить высоту, если хотите - на этот раз вы измените высоту в процентах. Эти проценты учитывают верхнюю и нижнюю части Axes поэтому 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{.ezlazyload}

Заключение

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

Если вас интересует визуализация данных и вы не знаете, с чего начать, обязательно ознакомьтесь с нашим комплектом книг по визуализации данных в Python{.ebook-link} :

::: {style=“border: 1px solid #ebebeb;padding: 15px;"} {.ebook-link}

Визуализация данных в Python

::: {.row} ::: {.col-md-4 .col-xs-12} {.ezlazyload .img-responsive .center-block} :::

::: {.col-md-8 .col-xs-12 .my-auto} Станьте опасными с визуализацией данных

✅ 30-дневная гарантия возврата денег без вопросов

✅ от начального до продвинутого

✅ Регулярно обновляется бесплатно (последнее обновление в апреле 2021 г.)

✅ Обновлено с бонусными ресурсами и руководствами ::: ::: :::

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

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

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

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

comments powered by Disqus