Spec-Zone.ru › Matplotlib 3.4

matplotlib.dates

Inheritance diagram of matplotlib.dates

Модуль Matplotlib предоставляет расширенные возможности построения графиков дат, опираясь на возможности Python datetime и дополнительного модуля dateutil.

Формат дат в Matplotlib

Matplotlib представляет даты в виде чисел с плавающей точкой, указывающих количество дней с момента стандартной эпохи 1970-01-01 UTC; например, 1970-01-01, 06:00 соответствует числу с плавающей точкой 0.25. Форматеры и локейторы требуют использования объектов datetime.datetime, поэтому можно отображать только даты между 0001 и 9999 годом. Микросекундная точность достижима (приблизительно) для 70 лет до и после эпохи, а для остальных дат (с 0001 по 9999 год) — 20 микросекунд. Эпоху можно изменить при импорте с помощью dates.set_epoch или rcParams["dates.epoch"] на другие даты при необходимости; см. Точность дат и эпохи для обсуждения.

Примечание

До Matplotlib 3.3 эпоха была 0000-12-31, что привело к потере современной микросекундной точности, а также сделало значение оси по умолчанию 0 недействительной датой. В версии 3.3 эпоха была изменена, как указано выше. Чтобы преобразовать старые ординальные числа с плавающей точкой в новую эпоху, пользователи могут сделать следующее:

new_ordinal = old_ordinal + mdates.date2num(np.datetime64('0000-12-31'))

Существует ряд вспомогательных функций для преобразования между объектами datetime и датами Matplotlib:

datestr2num Преобразовать строку даты в число даты, используя dateutil.parser.parse.
date2num Преобразовать объекты datetime в даты Matplotlib.
num2date Преобразовать даты Matplotlib в объекты datetime.
num2timedelta Преобразовать количество дней в объект timedelta.
drange Возвращает последовательность равномерно распределённых дат Matplotlib.
set_epoch Установить эпоху (начало отсчёта дат) для вычислений datetime.
get_epoch Получить эпоху, используемую модулем dates.

Примечание

Как и Python's datetime.datetime, Matplotlib использует григорианский календарь для всех преобразований между датами и числами с плавающей точкой. Эта практика не является универсальной, и различия в календарях могут привести к путанице между тем, что Python и Matplotlib возвращают как количество дней с 0001-01-01, и тем, что возвращают другие программные продукты и базы данных. Например, US Naval Observatory использует календарь, который переключается с юлианского на григорианский в октябре 1582 года. Таким образом, используя их калькулятор, количество дней между 0001-01-01 и 2006-04-01 составляет 732403, тогда как используя григорианский календарь через модуль datetime, мы получаем:

In [1]: date(2006, 4, 1).toordinal() - date(1, 1, 1).toordinal()
Out[1]: 732401

Все преобразователи, локейторы и форматеры дат Matplotlib учитывают часовой пояс. Если явный часовой пояс не указан, rcParams["timezone"] (по умолчанию: 'UTC') считается используемым. Если вам нужен пользовательский часовой пояс, передайте экземпляр datetime.tzinfo с параметром tz в num2date, plot_date и любых пользовательских локейторах и форматерах дат.

В этом модуле предоставлен широкий спектр специальных и универсальных локейторов и форматеров дат. См. matplotlib.ticker для общей информации о локейторах и форматерах меток. Они описаны ниже.

Модуль dateutil предоставляет дополнительный код для работы с метками дат, что упрощает размещение меток на любых датах. Примеры см. ниже.

Локейторы меток дат

Большинство локейторов дат могут определять отдельные или множественные значения. Например:

# import constants for the days of the week
from matplotlib.dates import MO, TU, WE, TH, FR, SA, SU

# tick on mondays every week
loc = WeekdayLocator(byweekday=MO, tz=tz)

# tick on mondays and saturdays
loc = WeekdayLocator(byweekday=(MO, SA))

Кроме того, большинство конструкторов принимают аргумент интервала:

# tick on mondays every second week
loc = WeekdayLocator(byweekday=MO, interval=2)

Локейтор rrule позволяет полностью настраивать размещение меток дат:

# tick every 5th easter
rule = rrulewrapper(YEARLY, byeaster=1, interval=5)
loc = RRuleLocator(rule)

Доступные локейторы меток дат:

  • MicrosecondLocator: Определение микросекунд.
  • SecondLocator: Определение секунд.
  • MinuteLocator: Определение минут.
  • HourLocator: Определение часов.
  • DayLocator: Определение указанных дней месяца.
  • WeekdayLocator: Определение дней недели, например, ПОН, ВТ.
  • MonthLocator: Определение месяцев, например, 7 для июля.
  • YearLocator: Определение годов, кратных основанию.
  • RRuleLocator: Определение с помощью matplotlib.dates.rrulewrapper. rrulewrapper — простой обертывающий элемент над dateutil's dateutil.rrule, который позволяет задавать метки дат практически произвольным образом. См. пример rrule.
  • AutoDateLocator: При автоматическом масштабировании этот класс выбирает лучший DateLocator (например, RRuleLocator) для установки пределов отображения и расположения меток. Если вызывается с interval_multiples=True, он расположит метки по разумным кратным интервалам меток. Например, если интервал составляет 4 часа, он выберет часы 0, 4, 8 и т. д. в качестве меток. Это поведение не гарантируется по умолчанию.

Форматирование дат

Доступные форматы дат:

  • AutoDateFormatter: пытается определить лучший формат. Это наиболее полезно при использовании с AutoDateLocator.
  • ConciseDateFormatter: также пытается определить лучший формат и сделать его максимально компактным, сохраняя при этом полную информацию о дате. Это наиболее полезно при использовании с AutoDateLocator.
  • DateFormatter: используйте строки формата strftime.
  • IndexDateFormatter: графики дат с неявным индексированием x.
class matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d', *, usetex=None)[source]

Bases: matplotlib.ticker.Formatter

A Formatter, который пытается определить лучший формат. Это наиболее полезно при использовании с AutoDateLocator.

У AutoDateFormatter есть словарь масштабов, который сопоставляет масштаб метки (расстояние в днях между одной основной меткой) и строку формата. По умолчанию он выглядит так:

self.scaled = {
    DAYS_PER_YEAR: rcParams['date.autoformat.year'],
    DAYS_PER_MONTH: rcParams['date.autoformat.month'],
    1.0: rcParams['date.autoformat.day'],
    1. / HOURS_PER_DAY: rcParams['date.autoformat.hour'],
    1. / (MINUTES_PER_DAY): rcParams['date.autoformat.minute'],
    1. / (SEC_PER_DAY): rcParams['date.autoformat.second'],
    1. / (MUSECONDS_PER_DAY): rcParams['date.autoformat.microsecond'],
}

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

>>> locator = AutoDateLocator()
>>> formatter = AutoDateFormatter(locator)
>>> formatter.scaled[1/(24.*60.)] = '%M:%S' # only show min and sec

Также можно использовать настраиваемую FuncFormatter. Следующий пример демонстрирует, как использовать настраиваемую функцию форматирования для удаления концевых нулей из десятичных секунд и добавления даты к первой метке:

>>> def my_format_function(x, pos=None):
...     x = matplotlib.dates.num2date(x)
...     if pos == 0:
...         fmt = '%D %H:%M:%S.%f'
...     else:
...         fmt = '%H:%M:%S.%f'
...     label = x.strftime(fmt)
...     label = label.rstrip("0")
...     label = label.rstrip(".")
...     return label
>>> from matplotlib.ticker import FuncFormatter
>>> formatter.scaled[1/(24.*60.)] = FuncFormatter(my_format_function)

Автоматическое форматирование меток дат.

Parameters:
locatorticker.Locator

Локатор, используемый этим осевым объектом.

tzstr, optional

Передается в dates.date2num.

defaultfmtstr

Формат по умолчанию, если ни одно из значений в self.scaled не больше единицы, возвращаемой locator._get_unit().

usetexbool, default: rcParams["text.usetex"] (default: False)

Включить/выключить использование математического режима TeX для отображения результатов форматировщика. Если какие-либо записи в self.scaled заданы как функции, то именно настраиваемой функции предоставляется право включать или выключать математический режим TeX.

END_OF_DOCUMENT_MARKER ```
class matplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=True)[source]

Bases: matplotlib.dates.DateLocator

При автоматическом масштабировании этот класс выбирает наилучший DateLocator для установки пределов отображения и расположения делений.

Атрибуты:
intervalddict

Отображение частот делений к разрешенным кратным значениям для этого деления. По умолчанию

self.intervald = {
    YEARLY  : [1, 2, 4, 5, 10, 20, 40, 50, 100, 200, 400, 500,
               1000, 2000, 4000, 5000, 10000],
    MONTHLY : [1, 2, 3, 4, 6],
    DAILY   : [1, 2, 3, 7, 14, 21],
    HOURLY  : [1, 2, 3, 4, 6, 12],
    MINUTELY: [1, 5, 10, 15, 30],
    SECONDLY: [1, 5, 10, 15, 30],
    MICROSECONDLY: [1, 2, 5, 10, 20, 50, 100, 200, 500,
                    1000, 2000, 5000, 10000, 20000, 50000,
                    100000, 200000, 500000, 1000000],
}

где ключи определены в dateutil.rrule.

Интервал используется для указания кратных значений, которые подходят для частоты делений. Например, каждые 7 дней разумно для ежедневных делений, но для минут/секунд более разумно 15 или 30.

При настройке вы должны изменять только значения для существующих ключей. Вы не должны добавлять или удалять записи.

Пример принудительного отображения делений каждые 3 часа:

locator = AutoDateLocator()
locator.intervald[HOURLY] = [3]  # only show every 3 hours
Параметры:
tzdatetime.tzinfo

Временная зона делений.

minticksint

Минимальное количество делений; управляет тем, отображаются ли деления ежегодно, ежемесячно и т.д.

maxticksint

Максимальное количество делений; управляет интервалом между делениями (каждые два, каждые три и т.д.). Для более тонкого управления это может быть словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т.д.) с их собственным максимальным количеством делений. Это может использоваться для поддержания количества делений, подходящего к формату, выбранному в AutoDateFormatter. Любая частота, не указанная в этом словаре, получает значение по умолчанию.

interval_multiplesbool, по умолчанию: True

Определяет, должны ли деления выбираться как кратные интервалу, фиксируя их на «более приятных» позициях. Например, это заставит деления быть в 0, 6, 12, 18 часов при ежечасовом делении с интервалом в 6 часов.

get_locator(dmin, dmax)[source]

Выбирает лучший локатор на основе расстояния.

nonsingular(vmin, vmax)[source]

Учитывая предложенный верхний и нижний пределы, корректирует диапазон, если он слишком близок к сингулярному (т.е. диапазон ~0).

tick_values(vmin, vmax)[source]

Возвращает значения размеченных делений, заданных vmin и vmax.

Примечание

Для получения расположения делений с автоматически определенными значениями vmin и vmax для соответствующего axis просто вызовите экземпляр локатора:

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
class matplotlib.dates.ConciseDateConverter(formats=None, zero_formats=None, offset_formats=None, show_offset=True, *, interval_multiples=True)[source]

Bases: matplotlib.dates.DateConverter

axisinfo(unit, axis)[source]

Возвращает AxisInfo для unit.

unit — это экземпляр tzinfo или None. Аргумент axis обязателен, но не используется.

END_OF_DOCUMENT_MARKER
класс matplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True, *, usetex=None)[source]

Базы: matplotlib.ticker.Formatter

A Formatter который пытается определить лучший формат для даты и сделать его максимально компактным, но при этом полным. Это наиболее полезно при использовании с AutoDateLocator:

>>> locator = AutoDateLocator()
>>> formatter = ConciseDateFormatter(locator)
Параметры:
locatorticker.Locator

Locator, используемый этим осевым объектом.

tzstr, необязательно

Передаётся в dates.date2num.

formatsсписок из 6 строк, необязательно

Строки формата для 6 уровней маркировки тиков: в основном годы, месяцы, дни, часы, минуты и секунды. Строки используют те же коды формата, что и strftime. Значение по умолчанию ['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']

zero_formatsсписок из 6 строк, необязательно

Строки формата для меток тиков, которые являются "нулями" для данного уровня тика. Например, если большинство тиков — месяцы, тики около 1 января 2005 года будут помечены «дек», «2005», «фев». Значение по умолчанию ['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M']

offset_formatsсписок из 6 строк, необязательно

Строки формата для 6 уровней, которые применяются к строке "смещения", находящейся справа на оси x или сверху на оси y. В сочетании с метками тиков это должно полностью определить дату. Значение по умолчанию:

['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
show_offsetbool, по умолчанию: True

Показывать смещение или нет.

usetexbool, по умолчанию: rcParams["text.usetex"] (значение по умолчанию: False)

Включить/выключить использование математического режима TeX для отображения результатов форматирования.

Примеры

См. Форматирование меток даты с использованием ConciseDateFormatter

(Исходный код, png, pdf)

../_images/dates_api-1.png

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

format_data_short(value)[source]

Возвращает короткую строку значения метки.

По умолчанию используется длинное значение, независимое от позиции.

format_ticks(values)[source]

Возвращает метки тиков для всех тиков сразу.

get_offset()[source]
класс matplotlib.dates.DateConverter(*, interval_multiples=True)[source]

Базы: matplotlib.units.ConversionInterface

Конвертер для данных datetime.date и datetime.datetime, или для данных даты/времени, представленных так, как они преобразуются функцией date2num.

Тег 'unit' для таких данных — None или экземпляр tzinfo.

axisinfo(unit, axis)[source]

Возвращает AxisInfo для unit.

unit — экземпляр tzinfo или None. Аргумент axis необходим, но не используется.

статический convert(value, unit, axis)[source]

Если value ещё не число или последовательность чисел, преобразуйте его с помощью date2num.

Аргументы unit и axis не используются.

статический default_units(x, axis)[source]

Возвращает экземпляр tzinfo для x или его первого элемента, или None

класс matplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[source]

Базы: matplotlib.ticker.Formatter

Форматирует метку (в днях с эпохи) с помощью строки форматирования strftime.

Параметры:
fmtstr

Строка форматирования strftime

tzdatetime.tzinfo, по умолчанию: rcParams["timezone"] (по умолчанию: 'UTC')

Временная зона меток.

usetexbool, по умолчанию: rcParams["text.usetex"] (по умолчанию: False)

Включить/выключить использование математического режима TeX для отображения результатов форматировщика.

свойство illegal_s
set_tzinfo(tz)[source]
класс matplotlib.dates.DateLocator(tz=None)[source]

Базы: matplotlib.ticker.Locator

Определяет местоположения меток при построении графиков дат.

Этот класс наследуется другими локерами и не предназначен для самостоятельного использования.

Параметры:
tzdatetime.tzinfo
datalim_to_dt()[source]

Преобразует интервал данных осей в объекты datetime.

hms0d = {'byhour': 0, 'byminute': 0, 'bysecond': 0}
nonsingular(vmin, vmax)[source]

Учитывая предлагаемый интервал верхних и нижних пределов, корректирует диапазон, если он слишком близок к сингулярному (т. е. диапазон ~0).

set_tzinfo(tz)[source]

Установить информацию о временной зоне.

viewlim_to_dt()[source]

Преобразует интервал просмотра в объекты datetime.

класс matplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[source]

Базы: matplotlib.dates.RRuleLocator

Создает метки на каждом дне месяца. Например, 1, 15, 30.

Помечает каждый день в bymonthday; bymonthday может быть целым числом или последовательностью.

По умолчанию метки ставятся на каждый день месяца: bymonthday=range(1, 32).

класс matplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[source]

Базы: matplotlib.dates.RRuleLocator

Создает метки на каждом часу.

Помечает каждый час в byhour; byhour может быть целым числом или последовательностью. По умолчанию метки ставятся на каждый час: byhour=range(24).

interval — интервал между итерациями. Например, если interval=2, отмечается каждое второе вхождение.

класс matplotlib.dates.IndexDateFormatter(t, fmt, tz=None)[source]

Базы: matplotlib.ticker.Formatter

[Устарело] Используйте с IndexLocator для циклической смены строк форматирования по индексу.

Примечания

Устарело начиная с версии 3.3.

Параметры:
tlist of float

Последовательность дат (дней с плавающей точкой).

fmtstr

Строка форматирования strftime.

END_OF_DOCUMENT_MARKER
класс matplotlib.dates.MicrosecondLocator(interval=1, tz=None)[source]

Базы: matplotlib.dates.DateLocator

Создаёт метки на равных интервалах в микросекундах.

Примечание

По умолчанию Matplotlib использует представление времени с плавающей точкой в днях с эпохи, поэтому построение данных с разрешением в микросекунды плохо работает для дат, удалённых (примерно на 70 лет) от эпохи (проверьте с помощью get_epoch).

Если вам нужны графики с разрешением ниже микросекунд, настоятельно рекомендуется использовать значения с плавающей точкой для секунд, а не представление времени в формате datetime.

Если вам действительно необходимо использовать datetime.datetime() или аналогичное и при этом нужна точность до микросекунд, измените начало отсчёта времени с помощью dates.set_epoch на значение, более близкое к отображаемым датам. Смотрите Точность дат и эпохи.

interval — интервал между каждой итерацией. Например, если interval=2, метки будут ставиться через каждую вторую микросекунду.

set_axis(axis)[source]
set_data_interval(vmin, vmax)[source]
set_view_interval(vmin, vmax)[source]
tick_values(vmin, vmax)[source]

Возвращает значения меток, расположенных между vmin и vmax.

Примечание

Чтобы получить позиции меток с автоматически определёнными значениями vmin и vmax для связанного axis просто вызовите экземпляр локейтора:

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
класс matplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[source]

Базы: matplotlib.dates.RRuleLocator

Создаёт метки на каждой минуте.

Помечает каждую минуту в byminute; byminute может быть целым числом или последовательностью. По умолчанию метки ставятся на каждой минуте: byminute=range(60)

interval — интервал между каждой итерацией. Например, если interval=2, метки ставятся на каждой второй минуте.

класс matplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[source]

Базы: matplotlib.dates.RRuleLocator

Создаёт метки на каждой дате месяца, например, 1, 3, 12.

Помечает каждый месяц в bymonth; bymonth может быть целым числом или последовательностью. По умолчанию range(1, 13), то есть каждый месяц.

interval — интервал между каждой итерацией. Например, если interval=2, метки ставятся на каждую вторую дату.

класс matplotlib.dates.RRuleLocator(o, tz=None)[source]

Базы: matplotlib.dates.DateLocator

Параметры:
tzdatetime.tzinfo
статический get_unit_generic(freq)[source]
tick_values(vmin, vmax)[source]

Возвращает значения меток, расположенных между vmin и vmax.

Примечание

Чтобы получить позиции меток с автоматически определёнными значениями vmin и vmax для связанного axis просто вызовите экземпляр локейтора:

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
класс matplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[source]

Базы: matplotlib.dates.RRuleLocator

Создаёт метки на каждой секунде.

Помечает каждую секунду в bysecond; bysecond может быть целым числом или последовательностью. По умолчанию метки ставятся на каждой секунде: bysecond = range(60)

interval — интервал между каждой итерацией. Например, если interval=2, метки ставятся на каждой второй секунде.

класс matplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None)[source]

Базы: matplotlib.dates.RRuleLocator

Создаёт метки на каждом дне недели.

Помечает каждый день недели в byweekday; byweekday может быть числом или последовательностью.

Элементы byweekday должны быть одним из MO, TU, WE, TH, FR, SA, SU, константы из dateutil.rrule, которые были импортированы в пространство имён matplotlib.dates.

interval указывает количество недель, которые нужно пропустить. Например, interval=2 отображает каждый второй день.

END_OF_DOCUMENT_MARKER
class matplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[source]

Bases: matplotlib.dates.DateLocator

Создаёт отметки на заданный день каждого года, являющегося кратным основанию.

Примеры:

# Tick every year on Jan 1st
locator = YearLocator()

# Tick every 5 years on July 4th
locator = YearLocator(5, month=7, day=4)

Помечает годы, кратные основанию, на заданный месяц и день (по умолчанию 1 января).

tick_values(vmin, vmax)[source]

Возвращает значения размеченных меток, заданных vmin и vmax.

Примечание

Чтобы получить расположение меток с автоматически определёнными значениями vmin и vmax для сопутствующего axis просто вызовите экземпляр Locator:

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
matplotlib.dates.date2num(d)[source]

Преобразует объекты datetime в даты Matplotlib.

Параметры:
ddatetime.datetime или numpy.datetime64 или последовательности этих типов
Возвращает:
число с плавающей точкой или последовательность чисел с плавающей точкой

Число дней с момента эпохи. См. get_epoch для эпохи, которую можно изменить с помощью rcParams["date.epoch"] (по умолчанию: '1970-01-01T00:00:00') или set_epoch. Если эпоха — "1970-01-01T00:00:00" (по умолчанию), то полдень 1 января 1970 ("1970-01-01T12:00:00") возвращает 0,5.

Примечания

Принимается григорианский календарь; это не является универсальной практикой. Подробности см. в строке документации модуля.

matplotlib.dates.datestr2num(d, default=None)[source]

Преобразует строку даты в datenum, используя dateutil.parser.parse.

Параметры:
dстрока или последовательность строк

Даты для преобразования.

defaultdatetime.datetime, необязательно

Дата по умолчанию, используемая при отсутствии полей в d.

matplotlib.dates.drange(dstart, dend, delta)[source]

Возвращает последовательность дат Matplotlib с равными интервалами.

Даты начинаются с dstart и заканчиваются, но не включают, dend. Они разделены delta.

Параметры:
dstart, denddatetime

Пределы дат.

deltadatetime.timedelta

Интервал между датами.

Возвращает:
numpy.array

Список чисел с плавающей точкой, представляющих даты Matplotlib.

matplotlib.dates.epoch2num(e)[source]

Преобразует временную метку UNIX в число дней с момента эпохи Matplotlib.

Параметры:
eсписок чисел с плавающей точкой

Время в секундах с 1970-01-01.

Возвращает:
numpy.array

Время в днях с момента эпохи Matplotlib (см. get_epoch()).

matplotlib.dates.get_epoch()[source]

Возвращает эпоху, используемую модулем dates.

Возвращает:
epochстрока

Строка эпохи (обрабатывается numpy.datetime64).

matplotlib.dates.num2date(x, tz=None)[source]

Преобразует даты Matplotlib в объекты datetime.

Параметры:
xчисло с плавающей точкой или последовательность чисел с плавающей точкой

Число дней (дробная часть представляет часы, минуты, секунды) с момента эпохи. См. get_epoch для эпохи, которую можно изменить с помощью rcParams["date.epoch"] (по умолчанию: '1970-01-01T00:00:00') или set_epoch.

tzстрока, по умолчанию: rcParams["timezone"] (по умолчанию: 'UTC')

Временная зона x.

Возвращает:
datetime или последовательность datetime

Даты возвращаются во временной зоне tz.

Если x — последовательность, возвращается последовательность объектов datetime.

Примечания

Добавление единицы здесь — историческая особенность. Также обратите внимание, что принимается григорианский календарь; это не является универсальной практикой. Подробности см. в строке документации модуля.

END_OF_DOCUMENT_MARKER
matplotlib.dates.num2epoch(d)[source]

Преобразовать количество дней с эпохи Matplotlib в время UNIX.

Параметры:
dсписок чисел с плавающей точкой

Время в днях с эпохи Matplotlib (см. get_epoch()).

Возвращает:
numpy.array

Время в секундах с 1970-01-01.

matplotlib.dates.num2timedelta(x)[source]

Преобразовать количество дней в объект timedelta.

Если x является последовательностью, будет возвращена последовательность объектов timedelta.

Параметры:
xчисло с плавающей точкой, последовательность чисел с плавающей точкой

Количество дней. Дробная часть представляет часы, минуты, секунды.

Возвращает:
datetime.timedelta или список[datetime.timedelta]
class matplotlib.dates.relativedelta(dt1=None, dt2=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0, year=None, month=None, day=None, weekday=None, yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None)[source]

Базовый класс: object

Тип relativedelta предназначен для применения к существующему типу datetime и может заменить определенные компоненты этого datetime или представляет интервал времени.

Он основан на спецификации отличной работы, проделанной M.-A. Lemburg в его расширении mx.DateTime. Однако обратите внимание, что этот тип НЕ реализует тот же алгоритм, что и его работа. Не ожидайте, что он будет вести себя как аналог mx.DateTime.

Существует два способа создания экземпляра relativedelta. Первый — передать ему два класса date/datetime:

relativedelta(datetime1, datetime2)

Второй способ — передать любое количество следующих ключевых аргументов:

relativedelta(arg1=x,arg2=y,arg3=z...)

year, month, day, hour, minute, second, microsecond:
    Absolute information (argument is singular); adding or subtracting a
    relativedelta with absolute information does not perform an arithmetic
    operation, but rather REPLACES the corresponding value in the
    original datetime with the value(s) in relativedelta.

years, months, weeks, days, hours, minutes, seconds, microseconds:
    Relative information, may be negative (argument is plural); adding
    or subtracting a relativedelta with relative information performs
    the corresponding arithmetic operation on the original datetime value
    with the information in the relativedelta.

weekday: 
    One of the weekday instances (MO, TU, etc) available in the
    relativedelta module. These instances may receive a parameter N,
    specifying the Nth weekday, which could be positive or negative
    (like MO(+1) or MO(-2)). Not specifying it is the same as specifying
    +1. You can also use an integer, where 0=MO. This argument is always
    relative e.g. if the calculated date is already Monday, using MO(1)
    or MO(-1) won't change the day. To effectively make it absolute, use
    it in combination with the day argument (e.g. day=1, MO(1) for first
    Monday of the month).

leapdays:
    Will add given days to the date found, if year is a leap
    year, and the date found is post 28 of february.

yearday, nlyearday:
    Set the yearday or the non-leap year day (jump leap days).
    These are converted to day/month/leapdays information.

Существуют относительные и абсолютные формы ключевых аргументов. Множественное число — относительное, единственное — абсолютное. Для каждого аргумента в порядке ниже, сначала применяется абсолютная форма (устанавливая каждый атрибут на это значение), а затем относительная форма (добавляя значение к атрибуту).

Порядок атрибутов, рассматриваемых при добавлении этой relativedelta к datetime:

  1. Год
  2. Месяц
  3. День
  4. Часы
  5. Минуты
  6. Секунды
  7. Микросекунды

Наконец, применяется weekday, используя правило, описанное выше.

Например

>>> from datetime import datetime
>>> from dateutil.relativedelta import relativedelta, MO
>>> dt = datetime(2018, 4, 9, 13, 37, 0)
>>> delta = relativedelta(hours=25, day=1, weekday=MO(1))
>>> dt + delta
datetime.datetime(2018, 4, 2, 14, 37)

Сначала день устанавливается в 1 (первое число месяца), затем добавляются 25 часов, чтобы перейти ко 2 дню и 14 часам, а затем применяется weekday, но так как 2 уже понедельник, никакого эффекта нет.

normalized()[source]

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

>>> relativedelta(days=1.5, hours=2).normalized()
relativedelta(days=+1, hours=+14)
Возвращает: Возвращает объект dateutil.relativedelta.relativedelta.
свойство weeks
class matplotlib.dates.rrule(freq, dtstart=None, interval=1, wkst=None, count=None, until=None, bysetpos=None, bymonth=None, bymonthday=None, byyearday=None, byeaster=None, byweekno=None, byweekday=None, byhour=None, byminute=None, bysecond=None, cache=False)[source]

Основа операции rrule. Принимает все ключевые слова, определённые в RFC, в качестве параметров конструктора (кроме byday, которое было переименовано в byweekday) и больше. Прототип конструктора:

rrule(freq)

Где freq должен быть одним из YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY или SECONDLY.

Примечание

Согласно разделу 3.3.10 RFC, экземпляры повторения, попадающие на недействительные даты и время, игнорируются, а не принудительно корректируются:

Правила повторения могут генерировать экземпляры повторения с недействительной датой (например, 30 февраля) или отсутствующим локальным временем (например, 1:30 утра в день, когда локальное время переводится на час вперёд в 1:00 утра). Такие экземпляры повторения ДОЛЖНЫ быть проигнорированы и НЕ ДОЛЖНЫ учитываться в качестве части набора повторений.

Это может привести к возможному неожиданному поведению, например, когда начальная дата наступает в конце месяца:

>>> from dateutil.rrule import rrule, MONTHLY
>>> from datetime import datetime
>>> start_date = datetime(2014, 12, 31)
>>> list(rrule(freq=MONTHLY, count=4, dtstart=start_date))
... 
[datetime.datetime(2014, 12, 31, 0, 0),
 datetime.datetime(2015, 1, 31, 0, 0),
 datetime.datetime(2015, 3, 31, 0, 0),
 datetime.datetime(2015, 5, 31, 0, 0)]

Кроме того, он поддерживает следующие ключевые параметры:

Параметры:
  • dtstart -- Начало повторения. Помимо того, что является основой для повторения, отсутствующие параметры в конечных экземплярах повторения также будут извлечены из этой даты. Если не указано, будет использовано datetime.now().
  • interval -- Интервал между каждой итерацией freq. Например, при использовании YEARLY интервал 2 означает раз в два года, но при HOURLY он означает раз в два часа. Значение по умолчанию интервала — 1.
  • wkst -- День начала недели. Должен быть одним из констант MO, TU, WE или целым числом, определяющим первый день недели. Это повлияет на повторения, основанные на еженедельных периодах. По умолчанию начало недели определяется calendar.firstweekday(), и может быть изменено calendar.setfirstweekday().
  • count --

    Если задано, это определяет количество генерируемых повторений.

    Примечание

    С версии 2.5.0 использование ключевого слова until в сочетании с count устарело, чтобы убедиться, что dateutil полностью соответствует RFC-5545 Sec. 3.3.10. Поэтому until и count не должны встречаться в одном вызове rrule.

  • until --

    Если задано, это должна быть экземпляр datetime, определяющая верхнюю границу повторения. Последнее повторение в правиле — это наибольшая дата и время, которая меньше или равна значению, указанному в параметре until.

    Примечание

    С версии 2.5.0 использование ключевого слова until в сочетании с count устарело, чтобы убедиться, что dateutil полностью соответствует RFC-5545 Sec. 3.3.10. Поэтому until и count не должны встречаться в одном вызове rrule.

  • и т.д. (перевод остальных пунктов аналогично)
replace(**kwargs)[source]

Возвращает новое rrule с теми же атрибутами, за исключением тех, для которых заданы новые значения в ключевых аргументах.

matplotlib.dates.set_epoch(epoch)[source]

Устанавливает эпоху (начало отсчёта дат) для расчётов datetime.

По умолчанию эпоха — rcParams["dates.epoch"] (по умолчанию 1970-01-01T00:00).

Если требуется точность до микросекунд, дата, отображаемая на графике, должна находиться примерно в пределах 70 лет от эпохи. Библиотека Matplotlib внутренне представляет даты как дни с момента эпохи, поэтому диапазон с плавающей точкой должен быть в пределах множителя 2^52.

set_epoch должен быть вызван перед преобразованием любых дат (т.е. около раздела импорта), иначе будет поднята ошибка RuntimeError.

См. также Точность дат и эпохи.

Параметры:
epochstr

действительная дата UTC, разбираемая с помощью numpy.datetime64 (не включайте часовой пояс).

© 2012–2021 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.4.3/api/dates_api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API