Spec-Zone.ru › Matplotlib 2.2

даты

Inheritance diagram of matplotlib.dates

matplotlib.dates

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

Формат даты в Matplotlib

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

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

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

Примечание

Так же как и в Python datetime, mpl использует григорианский календарь для всех преобразований между датами и числами с плавающей точкой. Эта практика не является универсальной, и различия в календарях могут привести к путанице в различиях между тем, что Python и mpl предоставляют как количество дней с 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 учитывают часовой пояс. Если явное время не указано, предполагается rcParam timezone. Если вы хотите использовать пользовательский часовой пояс, передайте экземпляр pytz.timezone с параметром tz в num2date(), plot_date() и любых созданных вами пользовательских тикерах или локаторах дат. См. pytz для получения информации о pytz и обработке часовых поясов.

В этом модуле представлен широкий спектр специализированных и универсальных локаторов и форматеров меток дат. См. 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.rrule (dateutil), что позволяет указывать метки дат практически произвольным образом. См. пример rrule.
  • AutoDateLocator: при автоматическом масштабировании этот класс выбирает лучший локатор DateLocator (например, RRuleLocator) для задания пределов отображения и позиций меток. Если вызвать с interval_multiples=True, он установит метки, совпадающие с разумными кратными интервалам меток. Например, если интервал составляет 4 часа, он выберет метки в 0, 4, 8 часов и т.д. Это поведение не гарантируется по умолчанию.

Форматировщики меток дат

Вот все форматировщики меток дат:

  • AutoDateFormatter: пытается определить лучший формат. Это наиболее полезно при использовании с AutoDateLocator.
  • DateFormatter: используйте строки формата strftime()
  • IndexDateFormatter: графики дат с неявным индексированием по x.
matplotlib.dates.date2num(d) [source]

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

Параметры:
d : datetime.datetime or numpy.datetime64 or sequences of these
Возвращает:
число с плавающей точкой или последовательность чисел с плавающей точкой

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

Примечания

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

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

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

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

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

tz : string, optional

Временная зона для x (по умолчанию используется rcparams timezone).

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

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

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

Примечания

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

matplotlib.dates.num2timedelta(x) [source]

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

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

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

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

Возвращает:
`datetime.timedelta` или список `datetime.timedelta`
matplotlib.dates.drange(dstart, dend, delta) [source]

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

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

Параметры:
dstart, dend : datetime

Пределы дат.

delta : datetime.timedelta

Интервал дат.

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

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

matplotlib.dates.epoch2num(e) [source]

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

matplotlib.dates.num2epoch(d) [source]

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

matplotlib.dates.mx2num(mxdates) [source]

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

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

Базовый класс: matplotlib.ticker.Formatter

Позиция отметки — секунды с эпохи. Используйте строку формата strftime().

Python поддерживает только форматирование datetime strftime() для годов, больших 1900. Благодаря Эндрю Дальке (Dalke Scientific Software), внесшему код strftime() для включения дат, предшествующих этому году.

fmt is a strftime() format string; tz is the
tzinfo экземпляр.
illegal_s = re.compile('((^|[^%])(%%)*%s)')
set_tzinfo(tz) [source]
strftime(dt, fmt=None) [source]

Ссылка на документацию для datetime.datetime.strftime()

fmt — строка формата datetime.datetime.strftime().

Предупреждение: Для годов до 1900, в зависимости от текущего языка, возможно, что год, отображаемый с помощью %x, будет неверным. Для годов до 100 %y и %Y будут давать заполненные нулями строки.

strftime_pre_1900(dt, fmt=None) [source]

Вызов time.strftime для годов до 1900, сдвига вперед на кратное 28 лет.

fmt — строка формата strftime().

Dalke: Надеюсь, я правильно рассчитал это. Календарь повторяется каждые 28 лет, за исключением високосных лет в столетиях, кроме високосных годов каждые 400 лет. Но только если вы используете григорианский календарь.

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

Базовый класс: matplotlib.ticker.Formatter

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

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

END_OF_DOCUMENT_MARKER
class matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d') [source]

Базы: 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().

class matplotlib.dates.DateLocator(tz=None) [source]

Базы: matplotlib.ticker.Locator

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

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

tz — 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.

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

Базы: matplotlib.dates.DateLocator

autoscale() [source]

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

static 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]
class matplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=False) [source]

Базы: matplotlib.dates.DateLocator

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

minticks — минимальное количество тиков, необходимое для выбора типа тиков (годовых, ежемесячных и т. д.).

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

tz — tzinfo экземпляр.

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

У AutoDateLocator есть словарь интервалов, который сопоставляет частоту тика (константу из 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
autoscale() [source]

Попробовать выбрать разумные пределы просмотра.

get_locator(dmin, dmax) [source]

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

nonsingular(vmin, vmax) [source]

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

refresh() [source]

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

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

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

Примечание

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

>>> print((type(loc)))
<type 'Locator'>
>>> print((loc()))
[1, 2, 3, 4]
class matplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None) [source]

Базы: 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() [source]

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

tick_values(vmin, vmax) [source]

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

Примечание

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

>>> print((type(loc)))
<type 'Locator'>
>>> print((loc()))
[1, 2, 3, 4]
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.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.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.MinuteLocator(byminute=None, interval=1, tz=None) [source]

Bases: matplotlib.dates.RRuleLocator

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

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

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

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.MicrosecondLocator(interval=1, tz=None) [source]

Bases: matplotlib.dates.DateLocator

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

Примечание

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

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

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

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 просто вызовите экземпляр Locator:

>>> print((type(loc)))
<type 'Locator'>
>>> print((loc()))
[1, 2, 3, 4]
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.

Примечание

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

Правила повторения могут генерировать экземпляры повторения с недействительной датой (например, 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 устарело в соответствии с RFC-5545, раздел 3.3.10.

  • until --

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

    Примечание

    Начиная с версии 2.5.0, использование ключевого слова until вместе с ключевым словом count устарело в соответствии с RFC-5545, раздел 3.3.10.

  • 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(**kwargs) [source]

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

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 aritmetic operation on the original datetime value
    with the information in the relativedelta.

weekday: 
    One of the weekday instances (MO, TU, etc). 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. Notice that
    if the calculated date is already Monday, for example,
    using MO(1) or MO(-1) won't change the day.

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, используя правило, описанное выше.

Например

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

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

normalized() [source]

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

>>> relativedelta(days=1.5, hours=2).normalized()
relativedelta(days=1, hours=14)
Возвращает: Возвращает объект dateutil.relativedelta.relativedelta.
weeks
matplotlib.dates.seconds(s) [source]

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

matplotlib.dates.minutes(m) [source]

Возвращает минуты как дни.

matplotlib.dates.hours(h) [source]

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

matplotlib.dates.weeks(w) [source]

Возвращает недели как дни.

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

Spec-Zone.ru

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