Как нарисовать вертикальные линии на данном участке в matplotlib?

Учитывая график сигнала во временном представлении, как рисовать линии, обозначающие соответствующий временной индекс?

В частности, учитывая график сигнала с временным индексом в диапазоне от 0 до 2,6 (с), я хочу нарисовать вертикальные красные линии с указанием соответствующего индекса времени для списка [0.22058956, 0.33088437, 2.20589566] , как я могу это сделать?

3 Solutions collect form web for “Как нарисовать вертикальные линии на данном участке в matplotlib?”

Стандартный способ добавления вертикальных линий, которые будут охватывать все ваше окно графика без необходимости указывать их фактическую высоту, – plt.axvline

 import matplotlib.pyplot as plt plt.axvline(x=0.22058956) plt.axvline(x=0.33088437) plt.axvline(x=2.20589566) 

ИЛИ

 xcoords = [0.22058956, 0.33088437, 2.20589566] for xc in xcoords: plt.axvline(x=xc) 

Вы можете использовать многие ключевые слова, доступные для других команд сюжета (например, color , linestyle , linestyle …). Вы можете передать в аргументы ключевого слова ymin и ymax если вам нравится в осях corrdinates (например, ymin=0.25 , ymax=0.75 будет охватывать среднюю половину графика). Существуют соответствующие функции для горизонтальных линий ( axhline ) и прямоугольников ( axvspan ).

Для нескольких строк

 xposition = [0.3, 0.4, 0.45] for xc in xposition: plt.axvline(x=xc, color='k', linestyle='--') 

Вызов axvline в цикле, как предложили другие, работает, но может быть неудобным, поскольку

  1. Каждая строка представляет собой отдельный сюжетный объект, который заставляет вещи быть очень медленными, когда у вас много линий.
  2. Когда вы создаете легенду, каждая строка имеет новую запись, которая может быть не такой, какой вы хотите.

Вместо этого вы можете использовать следующие удобные функции, которые создают все строки как один объект объекта:

 import matplotlib.pyplot as plt import numpy as np def axhlines(ys, **plot_kwargs): """ Draw horizontal lines across plot :param ys: A scalar, list, or 1D array of vertical offsets :param plot_kwargs: Keyword arguments to be passed to plot :return: The plot object corresponding to the lines. """ ys = np.array((ys, ) if np.isscalar(ys) else ys, copy=False) lims = plt.gca().get_xlim() y_points = np.repeat(ys[:, None], repeats=3, axis=1).flatten() x_points = np.repeat(np.array(lims + (np.nan, ))[None, :], repeats=len(ys), axis=0).flatten() plot = plt.plot(x_points, y_points, scalex = False, **plot_kwargs) return plot def axvlines(xs, **plot_kwargs): """ Draw vertical lines on plot :param xs: A scalar, list, or 1D array of horizontal offsets :param plot_kwargs: Keyword arguments to be passed to plot :return: The plot object corresponding to the lines. """ xs = np.array((xs, ) if np.isscalar(xs) else xs, copy=False) lims = plt.gca().get_ylim() x_points = np.repeat(xs[:, None], repeats=3, axis=1).flatten() y_points = np.repeat(np.array(lims + (np.nan, ))[None, :], repeats=len(xs), axis=0).flatten() plot = plt.plot(x_points, y_points, scaley = False, **plot_kwargs) return plot 
  • Ошибка при циклировании для создания подзаголовков
  • matplotlib: расширенная линия над двумя контрольными точками
  • Как нарисовать пересекающиеся плоскости?
  • Ошибка памяти при использовании pip install Matplotlib
  • Точный размер фигуры в matplotlib с метками заголовка, оси
  • python matplotlib imshow () пользовательские отметки
  • Как исправить ImportError в matplotlib
  • мой заголовок matplotlib обрезается
  • matplotlib matshow labels
  • Scatter не создает никаких точек на Basemap
  • 2D-графики не сидят на одном уровне с стенками 3D-оси в python mplot3D
  • Python - лучший язык программирования в мире.