Spec-Zone.ru › Matplotlib 3.3

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 лет до и после эпохи, и 20 микросекунд для остальной части допустимого диапазона дат (с года 0001 по 9999). Эпоху можно изменить во время импорта с помощью 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 Преобразовать строку даты в datenum, используя dateutil.parser.parse.
date2num Преобразовать объекты datetime в даты Matplotlib.
num2date Преобразовать даты Matplotlib в объекты datetime.
num2timedelta Преобразовать количество дней в объект timedelta.
drange Возвращает последовательность равномерно распределенных дат Matplotlib.
set_epoch Установить эпоху (начало отсчета дат) для расчетов с датами.
get_epoch Получить эпоху, используемую модулем dates.

Примечание

Как и в Python 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') [source]

Bases: matplotlib.ticker.Formatter

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

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

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

Максимальное количество желаемых меток; управляет интервалом между метками (каждые другие, каждые 3 и т. д.). Для тонкого контроля это может быть словарь, отображающий отдельные константы частоты rrule (ЕЖЕГОДНО, ЕЖЕМЕСЯЧНО и т. д.) на их собственное максимальное количество меток. Это можно использовать для поддержания количества меток, соответствующих формату, выбранному в 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).

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.ConciseDateConverter(formats=None, zero_formats=None, offset_formats=None, show_offset=True) [source]

Базы: matplotlib.dates.DateConverter

axisinfo(self, unit, axis) [source]

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

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

class matplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True) [source]

Базы: matplotlib.ticker.Formatter

A 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, default: 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.DateConverter [source]

Базы: matplotlib.units.ConversionInterface

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

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

static axisinfo(unit, axis) [source]

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

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

static convert(value, unit, axis) [source]

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

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

static default_units(x, axis) [source]

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

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

Базы: matplotlib.ticker.Formatter

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

Параметры:
fmtstr

Строка формата strftime.

tzdatetime.tzinfo, default: rcParams["timezone"] (default: 'UTC')

Часовой пояс меток.

property illegal_s
set_tzinfo(self, tz) [source]
class matplotlib.dates.DateLocator(tz=None) [source]

Базы: matplotlib.ticker.Locator

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

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

Параметры:
tzdatetime.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.

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

Базы: matplotlib.dates.RRuleLocator

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

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

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

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

Базы: matplotlib.dates.RRuleLocator

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

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

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

class matplotlib.dates.IndexDateFormatter(**kwargs) [source]

Базы: matplotlib.ticker.Formatter

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

Примечания

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

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

Последовательность дат (числа в днях).

fmtstr

Строка формата strftime.

class 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(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]

Базы: matplotlib.dates.RRuleLocator

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

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

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

class 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, отмечается каждый второй.

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

Базы: matplotlib.dates.DateLocator

Параметры:
tzdatetime.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]

Базы: matplotlib.dates.RRuleLocator

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

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

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

class 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]

Основы: 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
Возвращает:
float или последовательность чисел с плавающей точкой

Количество дней с эпохи. Смотрите 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.

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

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

defaultdatetime.datetime, optional

Значение по умолчанию для использования в случае отсутствия полей в 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.

Параметры:
elist of floats

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

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

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

matplotlib.dates.get_epoch() [source]

Получение эпохи, используемой модулем dates.

Возвращает:
эпоха: str

Строка для эпохи (разбираемая numpy.datetime64).

matplotlib.dates.mx2num(mxdates) [source]

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

Примечания

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

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

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

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

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

tzstr, optional

Временная зона x (по умолчанию rcParams["timezone"] (по умолчанию: 'UTC')).

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

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

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

Примечания

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

matplotlib.dates.num2epoch(d) [source]

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

Параметры:
dlist of floats

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

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

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

END_OF_DOCUMENT_MARKER
matplotlib.dates.num2timedelta(x) [source]

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

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

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

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

Возвращает:
datetime.timedelta or list[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. Микросекунды

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

Например

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

Примечание

Согласно 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 устарело, чтобы обеспечить полное соответствие 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(self, **kwargs) [source]

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

matplotlib.dates.set_epoch(epoch) [source]

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

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

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

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

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

Параметры:
epochstr

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

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

Spec-Zone.ru

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