Spec-Zone.ru › Matplotlib 3.2

matplotlib.dates

Схема наследования matplotlib.dates

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

Формат дат в Matplotlib

Matplotlib представляет даты с помощью чисел с плавающей точкой, определяющих количество дней, прошедших с 0001-01-01 UTC, плюс 1. Например, 0001-01-01 06:00 соответствует значению 1.25, а не 0.25. Значения < 1, то есть даты до 0001-01-01 UTC, не поддерживаются.

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

datestr2num Преобразование строки даты в datenum с использованием dateutil.parser.parse().
date2num Преобразование объектов datetime в даты Matplotlib.
num2date Преобразование дат Matplotlib в объекты datetime.
num2timedelta Преобразование количества дней в объект timedelta.
epoch2num Преобразование эпохи или последовательности эпох в новый формат даты, то есть количество дней с 0001.
num2epoch Преобразование дней с 0001 в эпоху.
drange Возвращает последовательность равноотстоящих дат Matplotlib.

Примечание

Как и модуль datetime в Python, Matplotlib использует григорианский календарь для всех преобразований между датами и числами с плавающей точкой. Эта практика не является универсальной, и различия в календарях могут приводить к путанице между тем, что возвращает Python и Matplotlib как количество дней с 0001-01-01, и тем, что возвращают другие программы и базы данных. Например, в США наблюдательная служба ВМС использует календарь, который переключается с юлианского на григорианский в октябре 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))

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

# 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') [источник]

Базовый класс: matplotlib.ticker.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)

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

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

Базы: matplotlib.dates.DateLocator

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

Атрибуты:
intervalddict

Сопоставление частот делений (константы из dateutil.rrule) с разрешенными кратными значениями. По умолчанию выглядит так:

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],
    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],
}

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

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

Часовой пояс делений.

minticksint

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

maxticksint

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

interval_multiplesbool, default: True

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

autoscale(self) [source]

[Устарело] Попробуйте разумно выбрать пределы отображения.

Заметки

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

get_locator(self, dmin, dmax) [source]

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

nonsingular(self, vmin, vmax) [source]

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

refresh(self) [source]

Обновить внутреннюю информацию на основе текущих пределов.

set_axis(self, axis) [source]
tick_values(self, vmin, vmax) [source]

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

Примечание

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

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

Базы: matplotlib.ticker.Formatter

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

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

Локализация, используемая этой осью.

tzstr, optional

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

formatslist of 6 strings, optional

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

zero_formatslist of 6 strings, optional

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

offset_formatslist of 6 strings, optional

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

['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
show_offsetbool

Показывать ли смещение. Значение по умолчанию True.

Примеры

См. Форматирование меток делений дат с помощью ConciseDateFormatter

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

../_images/dates_api-1.png

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

format_data_short(self, value) [source]

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

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

format_ticks(self, values) [source]

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

get_offset(self) [source]
class matplotlib.dates.DateFormatter(fmt, tz=None) [source]

Базы: matplotlib.ticker.Formatter

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

Параметры:
fmtstr

strftime строка формата

tztzinfo, default: rcParams["timezone"] (default: 'UTC')

Часовой пояс делений.

illegal_s = re.compile('((^|[^%])(%%)*%s)')
set_tzinfo(self, tz) [source]
END_OF_DOCUMENT_MARKER
class matplotlib.dates.DateLocator(tz=None) [source]

Bases: matplotlib.ticker.Locator

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

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

tz — объект tzinfo.

datalim_to_dt(self) [source]

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

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

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

set_tzinfo(self, tz) [source]

Установить информацию о часовом поясе.

viewlim_to_dt(self) [source]

Преобразует интервал отображения в объекты datetime.

class matplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None) [source]

Bases: matplotlib.dates.RRuleLocator

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

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

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

class matplotlib.dates.HourLocator(byhour=None, interval=1, tz=None) [source]

Bases: matplotlib.dates.RRuleLocator

Создает деления на каждый час.

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

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

class matplotlib.dates.IndexDateFormatter(t, fmt, tz=None) [source]

Bases: matplotlib.ticker.Formatter

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

t — последовательность дат (дней с плавающей точкой). fmt — строка формата strftime.

class matplotlib.dates.MicrosecondLocator(interval=1, tz=None) [source]

Bases: matplotlib.dates.DateLocator

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

Примечание

Из-за представления времени с плавающей точкой в днях с момента 0001-01-01 по UTC (плюс 1) построение данных с разрешением по микросекундам не работает должным образом с текущими датами.

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

Если вы действительно должны использовать datetime.datetime() или аналогичное и все еще нуждаетесь в точности до микросекунд, единственный вариант — использовать очень ранние годы; рекомендуется использование года 0001.

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

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

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

Примечание

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

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

Bases: matplotlib.dates.RRuleLocator

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

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

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

class matplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None) [source]

Bases: matplotlib.dates.RRuleLocator

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

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

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

class matplotlib.dates.RRuleLocator(o, tz=None) [source]

Bases: matplotlib.dates.DateLocator

tz — объект tzinfo.

autoscale(self) [source]

[Устаревшее] Устанавливает пределы отображения, чтобы они включали диапазон данных.

Примечания

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

static get_unit_generic(freq) [source]
tick_values(self, vmin, vmax) [source]

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

Примечание

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

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

Bases: matplotlib.dates.RRuleLocator

Создаёт деления на каждую секунду.

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

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

class matplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None) [source]

Bases: matplotlib.dates.RRuleLocator

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

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

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

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

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 января).

autoscale(self) [source]

[Устарело] Устанавливает пределы отображения, чтобы включить диапазон данных.

Примечания

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

tick_values(self, 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 or numpy.datetime64 or sequences of these
Возвращает:
число или последовательность чисел

Число дней (дробная часть представляет часы, минуты, секунды, мс) с 0001-01-01 00:00:00 UTC плюс один.

Примечания

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

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

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

Параметры:
dstr or sequence of str

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

defaultdatetime instance, optional

Значение по умолчанию для использования, когда поля в d отсутствуют.

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

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

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

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

Пределы дат.

deltadatetime.timedelta

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

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

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

matplotlib.dates.epoch2num(e) [source]

Преобразует эпоху или последовательность эпох в новый формат дат, то есть количество дней с 0001.

matplotlib.dates.hours(h) [source]

[Устарело] Возвращает часы как дни.

Примечания

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

matplotlib.dates.minutes(m) [source]

[Устарело] Возвращает минуты как дни.

Примечания

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

matplotlib.dates.mx2num(mxdates) [source]

[Устарело] Преобразует экземпляр mx datetime (или последовательность экземпляров mx) в новый формат дат.

Примечания

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

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

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

Параметры:
xfloat or sequence of floats

Число дней (дробная часть представляет часы, минуты, секунды) с 0001-01-01 00:00:00 UTC, плюс один.

tzstr, optional

Часовой пояс x (по умолчанию rcparams timezone).

Возвращает:
datetime or sequence of datetime

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

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

Примечания

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

matplotlib.dates.num2epoch(d) [source]

Преобразует дни с 0001 в эпоху. d может быть числом или последовательностью.

matplotlib.dates.num2timedelta(x) [source]

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

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

Параметры:
xfloat, sequence of floats

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

Возвращает:
datetime.timedelta or list[datetime.timedelta]
END_OF_DOCUMENT_MARKER
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 предназначен для применения к существующей дате/времени и может заменить определённые компоненты этой даты/времени или представлять интервал времени.

Он основан на спецификации отличной работы 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. Микросекунды

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

Например

>>> 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-й час, и, наконец, применяется день недели, но так как 2-е число уже понедельник, никакого эффекта нет.

normalized(self) [source]

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

>>> relativedelta(days=1.5, hours=2).normalized()
relativedelta(days=+1, hours=+14)
Возвращает: Возвращает объект dateutil.relativedelta.relativedelta.
property 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]

Базовый класс: dateutil.rrule.rrulebase

Это основа операции 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 Раздел 3.3.10. Поэтому until и count не должны присутствовать в одном вызове rrule.

  • until —

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

    Примечание

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

  • bysetpos — Если задано, это должно быть целое число или последовательность целых чисел, положительных или отрицательных. Каждое заданное целое число будет указывать номер экземпляра, соответствующий n-му экземпляру правила внутри периода частоты. Например, bysetpos -1 в сочетании с MONTHLY частотой и byweekday (MO, TU, WE, TH, FR) даст последний рабочий день каждого месяца.
  • bymonth — Если задано, это должно быть целое число или последовательность целых чисел, означающих месяцы, к которым применяется повторение.
  • bymonthday — Если задано, это должно быть целое число или последовательность целых чисел, означающих дни месяца, к которым применяется повторение.
  • byyearday — Если задано, это должно быть целое число или последовательность целых чисел, означающих дни года, к которым применяется повторение.
  • byeaster — Если задано, это должно быть целое число или последовательность целых чисел, положительных или отрицательных. Каждое целое число определит смещение от Пасхи. Передача смещения 0 в byeaster даст саму Пасху. Это расширение спецификации RFC.
  • byweekno — Если задано, это должно быть целое число или последовательность целых чисел, означающих номера недель, к которым применяется повторение. Номера недель имеют значение, описанное в ISO8601, то есть первая неделя года — та, которая содержит как минимум четыре дня нового года.
  • byweekday — Если задано, это должно быть целое число (0 == MO), последовательность целых чисел, одна из констант дней недели (MO, TU и т.д.) или последовательность таких констант. При задании эти переменные определят дни недели, на которые будет применено повторение. Также можно использовать аргумент n для экземпляров дней недели, что будет означать n-ый экземпляр этого дня недели в периоде. Например, с MONTHLY или с YEARLY и BYMONTH, использование FR(+1) в byweekday укажет на первый пятницу месяца, где происходит повторение. Обратите внимание, что в документации RFC это указано как BYDAY, но было переименовано, чтобы избежать неоднозначности этого ключевого слова.
  • byhour — Если задано, это должно быть целое число или последовательность целых чисел, означающих часы, к которым применяется повторение.
  • byminute — Если задано, это должно быть целое число или последовательность целых чисел, означающих минуты, к которым применяется повторение.
  • bysecond — Если задано, это должно быть целое число или последовательность целых чисел, означающих секунды, к которым применяется повторение.
  • cache — Если задано, это должно быть булево значение, указывающее на включение или отключение кэширования результатов. Если вы будете использовать один и тот же экземпляр rrule несколько раз, включение кэширования значительно улучшит производительность.
replace(self, **kwargs) [source]

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

matplotlib.dates.seconds(s) [source]

[Устаревшее] Возвращает секунды как дни.

Примечания

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

matplotlib.dates.weeks(w) [source]

[Устаревшее] Возвращает недели как дни.

Примечания

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

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

Spec-Zone.ru

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