matplotlib.dates
Модуль Matplotlib предоставляет расширенные возможности построения графиков с датами, опираясь на возможности Python datetime и дополнительного модуля dateutil.
Формат дат в Matplotlib
Matplotlib представляет даты в виде чисел с плавающей точкой, указывающих количество дней с момента стандартной эпохи 1970-01-01 UTC; например, 1970-01-01, 06:00 соответствует числу с плавающей точкой 0.25. Форматеры и локейторы требуют использования объектов datetime.datetime, поэтому можно отображать только даты между 0001 и 9999 годом. Микросекундная точность достижима (приблизительно) для 70 лет до и после эпохи, а для остальных дат (с 0001 по 9999 год) — 20 микросекунд. Эпоху можно изменить при импорте с помощью dates.set_epoch или rcParams["dates.epoch"] на другие даты при необходимости; см. Точность дат и эпохи для обсуждения.
Примечание
До Matplotlib 3.3 эпоха была 0000-12-31, что привело к потере современной микросекундной точности, а также сделало значение оси по умолчанию 0 недействительной датой. В версии 3.3 эпоха была изменена, как указано выше. Чтобы преобразовать старые ординальные числа с плавающей точкой в новую эпоху, пользователи могут сделать следующее:
new_ordinal = old_ordinal + mdates.date2num(np.datetime64('0000-12-31'))
Существует ряд вспомогательных функций для преобразования между объектами datetime и датами Matplotlib:
datestr2num | Преобразовать строку даты в число даты, используя dateutil.parser.parse. |
date2num | Преобразовать объекты datetime в даты Matplotlib. |
num2date | Преобразовать даты Matplotlib в объекты datetime. |
num2timedelta | Преобразовать количество дней в объект timedelta. |
drange | Возвращает последовательность равномерно распределённых дат Matplotlib. |
set_epoch | Установить эпоху (начало отсчёта дат) для вычислений datetime. |
get_epoch | Получить эпоху, используемую модулем dates. |
Примечание
Как и Python 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'sdateutil.rrule, который позволяет задавать метки дат практически произвольным образом. См. пример rrule. -
AutoDateLocator: При автоматическом масштабировании этот класс выбирает лучшийDateLocator(например,RRuleLocator) для установки пределов отображения и расположения меток. Если вызывается сinterval_multiples=True, он расположит метки по разумным кратным интервалам меток. Например, если интервал составляет 4 часа, он выберет часы 0, 4, 8 и т. д. в качестве меток. Это поведение не гарантируется по умолчанию.
Форматирование дат
Доступные форматеры дат:
-
AutoDateFormatter: пытается определить лучший формат. Это наиболее полезно при использовании сAutoDateLocator. -
ConciseDateFormatter: также пытается определить лучший формат и сделать его максимально компактным, сохраняя при этом полную информацию о дате. Это наиболее полезно при использовании сAutoDateLocator. -
DateFormatter: используйте строки форматаstrftime. -
IndexDateFormatter: графики дат с неявным индексированием x.
- класс
matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d', *, usetex=None)[исходный код] -
Основано на
matplotlib.ticker.FormatterFormatter, который пытается определить наилучший формат. Это наиболее полезно при использовании с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)Автоматическое форматирование меток дат.
Параметры: -
locator
ticker.Locator -
Локатор, используемый этим осевым объектом.
- tzстрока, необязательно
-
Передаётся в
dates.date2num. - defaultfmtстрока
-
Формат по умолчанию, если ни одно из значений в
self.scaledне больше единицы, возвращаемойlocator._get_unit(). -
usetexлогическое значение, по умолчанию:
rcParams["text.usetex"](значение по умолчанию:False) -
Включить или отключить использование математического режима TeX для отображения результатов форматировщика. Если какие-либо записи в
self.scaledзаданы как функции, то право включать или выключать математический режим TeX предоставляется пользовательской функции.
-
locator
- класс
matplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=True)[исходный код] -
Основано на
matplotlib.dates.DateLocatorПри автоматическом масштабировании этот класс выбирает наилучший
DateLocatorдля установки пределов отображения и расположения делений.Атрибуты: - intervaldсловарь
-
Сопоставление частот делений с допустимыми кратными значениями для этих делений. По умолчанию
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
Параметры: -
tz
datetime.tzinfo -
Часовой пояс делений.
- minticksцелое число
-
Минимальное количество делений; определяет, будут ли деления ежегодными, ежемесячными и т. д.
- maxticksцелое число
-
Максимальное количество делений; определяет интервал между делениями (через два, через три и т. д.). Для более точной настройки это может быть словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т. д.) с соответствующим максимальным количеством делений. Это позволяет поддерживать подходящее количество делений для формата, выбранного в
AutoDateFormatter. Для частот, не указанных в этом словаре, используется значение по умолчанию. - interval_multiplesлогическое значение, по умолчанию: True
-
Определяет, следует ли выбирать деления как кратные интервалу, закрепляя их на «более удобных» позициях. Например, при часовом делении с интервалом в 6 часов деления будут расположены на отметках 0, 6, 12 и 18 часов.
-
get_locator(dmin, dmax)[исходный код] -
Выбирает наилучший локатор на основе диапазона.
-
nonsingular(vmin, vmax)[исходный код] -
Получив предложенные верхнюю и нижнюю границы, корректирует диапазон, если он слишком близок к сингулярному (то есть диапазон примерно равен 0).
-
tick_values(vmin, vmax)[исходный код] -
Возвращает значения делений для заданных vmin и vmax.
Примечание
Чтобы получить расположение делений с автоматически определёнными значениями vmin и vmax для соответствующего
axis, просто вызовите экземпляр локатора:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- класс
matplotlib.dates.ConciseDateConverter(formats=None, zero_formats=None, offset_formats=None, show_offset=True, *, interval_multiples=True)[исходный код] -
Основано на
matplotlib.dates.DateConverter-
axisinfo(unit, axis)[исходный код] -
Возвращает
AxisInfoдля unit.unit — это экземпляр tzinfo или None. Аргумент axis обязателен, но не используется.
-
- класс
matplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True, *, usetex=None)[источник] -
Базы:
matplotlib.ticker.FormatterФорматировщик
Formatter, который пытается определить лучший формат даты и сделать его максимально компактным, но при этом полным. Наиболее полезен при использовании сAutoDateLocator:>>> locator = AutoDateLocator() >>> formatter = ConciseDateFormatter(locator)
Параметры: -
locator
ticker.Locator -
Локатор, используемый этим осевым объектом.
- tzстрока, необязательно
-
Передаётся в
dates.date2num. - formatsсписок из 6 строк, необязательно
-
Строки формата для 6 уровней маркировки тиков: обычно это годы, месяцы, дни, часы, минуты и секунды. В строках используются те же коды формата, что и в
strftime. Значение по умолчанию['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f'] - zero_formatsсписок из 6 строк, необязательно
-
Строки формата для меток тиков, которые являются «нулями» для данного уровня тиков. Например, если большинство тиков соответствуют месяцам, тики около 1 января 2005 года будут помечены как «дек», «2005», «фев». Значение по умолчанию
['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M'] - offset_formatsсписок из 6 строк, необязательно
-
Строки формата для 6 уровней, используемые в строке «смещения», расположенной справа на оси x или сверху на оси y. В сочетании с метками тиков они должны полностью определять дату. Значение по умолчанию:
['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
- show_offsetbool, по умолчанию: True
-
Показывать смещение или нет.
-
usetexbool, по умолчанию:
rcParams["text.usetex"](значение по умолчанию:False) -
Включить или выключить использование математического режима TeX для отображения результатов форматирования.
Примеры
См. Форматирование меток даты с использованием ConciseDateFormatter
(Исходный код, png, pdf)
Автоматически форматирует метки дат. Формат по умолчанию используется для формирования начальной строки, после чего удаляются избыточные элементы.
-
format_data_short(value)[источник] -
Возвращает короткую строку значения метки.
По умолчанию используется длинное значение, не зависящее от позиции.
-
format_ticks(values)[источник] -
Возвращает метки тиков для всех тиков сразу.
-
get_offset()[источник]
-
locator
- класс
matplotlib.dates.DateConverter(*, interval_multiples=True)[источник] -
Базы:
matplotlib.units.ConversionInterfaceКонвертер для данных
datetime.dateиdatetime.datetime, а также для данных даты и времени, представленных так же, как при преобразовании функциейdate2num.Тег «unit» для таких данных — None или экземпляр tzinfo.
-
axisinfo(unit, axis)[источник] -
Возвращает
AxisInfoдля unit.unit — экземпляр tzinfo или None. Аргумент axis необходим, но не используется.
- статический
convert(value, unit, axis)[источник] -
Если value ещё не является числом или последовательностью чисел, преобразует его с помощью
date2num.Аргументы unit и axis не используются.
- статический
default_units(x, axis)[источник] -
Возвращает экземпляр tzinfo для x или его первого элемента либо None
-
- класс
matplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[источник] -
Базы:
matplotlib.ticker.FormatterФорматирует метку (в днях с эпохи) с помощью строки форматирования
strftime.Параметры: - fmtстрока
-
Строка форматирования
strftime -
tz
datetime.tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток.
-
usetexbool, по умолчанию:
rcParams["text.usetex"](по умолчанию:False) -
Включить или выключить использование математического режима TeX для отображения результатов форматировщика.
- свойство
illegal_s
-
set_tzinfo(tz)[источник]
- класс
matplotlib.dates.DateLocator(tz=None)[источник] -
Базы:
matplotlib.ticker.LocatorОпределяет положения меток при построении графиков дат.
Этот класс наследуется другими локаторами и не предназначен для самостоятельного использования.
Параметры: -
datalim_to_dt()[источник] -
Преобразует интервал данных осей в объекты datetime.
-
hms0d= {'byhour': 0, 'byminute': 0, 'bysecond': 0}
-
nonsingular(vmin, vmax)[источник] -
Получив предложенный интервал нижней и верхней границ, корректирует диапазон, если он слишком близок к вырожденному (то есть диапазон примерно равен 0).
-
set_tzinfo(tz)[источник] -
Устанавливает информацию о временной зоне.
-
viewlim_to_dt()[источник] -
Преобразует интервал просмотра в объекты datetime.
-
- класс
matplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[источник] -
Базы:
matplotlib.dates.RRuleLocatorСоздаёт метки для каждого дня месяца. Например, 1, 15, 30.
Помечает каждый день из bymonthday; bymonthday может быть целым числом или последовательностью.
По умолчанию метки ставятся на каждый день месяца:
bymonthday=range(1, 32).
- класс
matplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[источник] -
Базы:
matplotlib.dates.RRuleLocatorСоздаёт метки для каждого часа.
Помечает каждый час из byhour; byhour может быть целым числом или последовательностью. По умолчанию метки ставятся на каждый час:
byhour=range(24).interval — интервал между итерациями. Например, если
interval=2, отмечается каждое второе вхождение.
- класс
matplotlib.dates.IndexDateFormatter(t, fmt, tz=None)[источник] -
Базы:
matplotlib.ticker.Formatter[Устарело] Используйте с
IndexLocatorдля циклической смены строк форматирования по индексу.Примечания
Устарело начиная с версии 3.3.
Параметры: - tсписок вещественных чисел
-
Последовательность дат (дней, представленных числами с плавающей точкой).
- fmtстрока
-
Строка форматирования
strftime.
- класс
matplotlib.dates.MicrosecondLocator(interval=1, tz=None)[источник] -
Базы:
matplotlib.dates.DateLocatorСоздаёт метки через равные интервалы в микросекундах.
Примечание
По умолчанию Matplotlib использует представление времени с плавающей точкой в днях с эпохи, поэтому построение данных с разрешением в микросекунды плохо работает для дат, удалённых от эпохи примерно на 70 лет (проверьте с помощью
get_epoch).Если вам нужны графики с разрешением ниже микросекунды, настоятельно рекомендуется использовать значения с плавающей точкой в секундах, а не представление времени в формате datetime.
Если вам действительно необходимо использовать datetime.datetime() или аналогичное и при этом нужна точность до микросекунд, измените начало отсчёта времени с помощью
dates.set_epoch, выбрав значение, более близкое к отображаемым датам. См. Точность дат и эпохи.interval — интервал между итерациями. Например, если
interval=2, метки будут ставиться через каждую вторую микросекунду.-
set_axis(axis)[источник]
-
set_data_interval(vmin, vmax)[источник]
-
set_view_interval(vmin, vmax)[источник]
-
tick_values(vmin, vmax)[источник] -
Возвращает значения меток, расположенных между vmin и vmax.
Примечание
Чтобы получить позиции меток с автоматически определёнными значениями vmin и vmax для связанного
axis, просто вызовите экземпляр локатора:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
-
- класс
matplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[источник] -
Базы:
matplotlib.dates.RRuleLocatorСоздаёт метки для каждой минуты.
Помечает каждую минуту из byminute; byminute может быть целым числом или последовательностью. По умолчанию метки ставятся на каждой минуте:
byminute=range(60)interval — интервал между итерациями. Например, если
interval=2, метки ставятся через каждую вторую минуту.
- класс
matplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[источник] -
Базы:
matplotlib.dates.RRuleLocatorСоздаёт метки для заданных дней месяца, например 1, 3, 12.
Помечает каждый месяц из bymonth; bymonth может быть целым числом или последовательностью. По умолчанию
range(1, 13), то есть каждый месяц.interval — интервал между итерациями. Например, если
interval=2, метки ставятся через каждую вторую дату.
- класс
matplotlib.dates.RRuleLocator(o, tz=None)[источник] -
Базы:
matplotlib.dates.DateLocatorПараметры: - статический
get_unit_generic(freq)[источник]
-
tick_values(vmin, vmax)[источник] -
Возвращает значения меток, расположенных между vmin и vmax.
Примечание
Чтобы получить позиции меток с автоматически определёнными значениями vmin и vmax для связанного
axis, просто вызовите экземпляр локатора:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- статический
- класс
matplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[источник] -
Базы:
matplotlib.dates.RRuleLocatorСоздаёт метки для каждой секунды.
Помечает каждую секунду из bysecond; bysecond может быть целым числом или последовательностью. По умолчанию метки ставятся на каждой секунде:
bysecond = range(60)interval — интервал между итерациями. Например, если
interval=2, метки ставятся через каждую вторую секунду.
- класс
matplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None)[источник] -
Базы:
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)[исходный код] -
Bases:
matplotlib.dates.DateLocatorСоздаёт отметки на заданный день каждого года, являющегося кратным основанию.
Примеры:
# Tick every year on Jan 1st locator = YearLocator() # Tick every 5 years on July 4th locator = YearLocator(5, month=7, day=4)
Помечает годы, кратные основанию, на заданный месяц и день (по умолчанию 1 января).
-
tick_values(vmin, vmax)[исходный код] -
Возвращает значения размеченных меток, заданных vmin и vmax.
Примечание
Чтобы получить расположение меток с автоматически определёнными значениями vmin и vmax для сопутствующего
axisпросто вызовите экземпляр Locator:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
-
-
matplotlib.dates.date2num(d)[исходный код] -
Преобразует объекты datetime в даты Matplotlib.
Параметры: -
d
datetime.datetimeилиnumpy.datetime64или последовательности этих типов
Возвращает: - число с плавающей точкой или последовательность чисел с плавающей точкой
-
Число дней с момента эпохи. См.
get_epochдля эпохи, которую можно изменить с помощьюrcParams["date.epoch"](по умолчанию:'1970-01-01T00:00:00') илиset_epoch. Если эпоха — "1970-01-01T00:00:00" (по умолчанию), то полдень 1 января 1970 ("1970-01-01T12:00:00") возвращает 0,5.
Примечания
Принимается григорианский календарь; это не является универсальной практикой. Подробности см. в строке документации модуля.
-
d
-
matplotlib.dates.datestr2num(d, default=None)[исходный код] -
Преобразует строку даты в datenum, используя
dateutil.parser.parse.Параметры: - dстрока или последовательность строк
-
Даты для преобразования.
- defaultdatetime.datetime, необязательно
-
Дата по умолчанию, используемая при отсутствии полей в d.
-
matplotlib.dates.drange(dstart, dend, delta)[исходный код] -
Возвращает последовательность дат Matplotlib с равными интервалами.
Даты начинаются с dstart и заканчиваются, но не включают, dend. Они разделены delta.
Параметры: -
dstart, dend
datetime -
Пределы дат.
-
delta
datetime.timedelta -
Интервал между датами.
Возвращает: numpy.array-
Список чисел с плавающей точкой, представляющих даты Matplotlib.
-
dstart, dend
-
matplotlib.dates.epoch2num(e)[исходный код] -
Преобразует временную метку UNIX в число дней с момента эпохи Matplotlib.
Параметры: - eсписок чисел с плавающей точкой
-
Время в секундах с 1970-01-01.
Возвращает: numpy.array-
Время в днях с момента эпохи Matplotlib (см.
get_epoch()).
-
matplotlib.dates.get_epoch()[исходный код] -
Возвращает эпоху, используемую модулем
dates.Возвращает: - epochстрока
-
Строка эпохи (обрабатывается
numpy.datetime64).
-
matplotlib.dates.num2date(x, tz=None)[исходный код] -
Преобразует даты Matplotlib в объекты
datetime.Параметры: - xчисло с плавающей точкой или последовательность чисел с плавающей точкой
-
Число дней (дробная часть представляет часы, минуты, секунды) с момента эпохи. См.
get_epochдля эпохи, которую можно изменить с помощьюrcParams["date.epoch"](по умолчанию:'1970-01-01T00:00:00') илиset_epoch. -
tzстрока, по умолчанию:
rcParams["timezone"](по умолчанию:'UTC') -
Временная зона x.
Возвращает: Примечания
Добавление единицы здесь — историческая особенность. Также обратите внимание, что принимается григорианский календарь; это не является универсальной практикой. Подробности см. в строке документации модуля.
-
matplotlib.dates.num2epoch(d)[исходный код] -
Преобразует количество дней с эпохи Matplotlib во время UNIX.
Параметры: - dсписок чисел с плавающей точкой
-
Время в днях с эпохи Matplotlib (см.
get_epoch()).
Возвращает: numpy.array-
Время в секундах с 1970-01-01.
-
matplotlib.dates.num2timedelta(x)[исходный код] -
Преобразует количество дней в объект
timedelta.Если x является последовательностью, будет возвращена последовательность объектов
timedelta.Параметры: - xчисло с плавающей точкой, последовательность чисел с плавающей точкой
-
Количество дней. Дробная часть представляет часы, минуты, секунды.
Возвращает: -
datetime.timedeltaили список[datetime.timedelta]
- class
matplotlib.dates.relativedelta(dt1=None, dt2=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0, year=None, month=None, day=None, weekday=None, yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None)[исходный код] -
Базовый класс:
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:
- Год
- Месяц
- День
- Часы
- Минуты
- Секунды
- Микросекунды
Наконец, применяется weekday, используя правило, описанное выше.
Например
>>> from datetime import datetime >>> from dateutil.relativedelta import relativedelta, MO >>> dt = datetime(2018, 4, 9, 13, 37, 0) >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) >>> dt + delta datetime.datetime(2018, 4, 2, 14, 37)
Сначала день устанавливается в 1 (первое число месяца), затем добавляются 25 часов, чтобы перейти ко 2 дню и 14 часам, а затем применяется weekday, но так как 2 уже понедельник, никакого эффекта нет.
-
normalized()[исходный код] -
Возвращает версию этого объекта, представленную исключительно с использованием целочисленных значений для относительных атрибутов.
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
Возвращает: Возвращает объект dateutil.relativedelta.relativedelta.
- свойство
weeks
- class
matplotlib.dates.rrule(freq, dtstart=None, interval=1, wkst=None, count=None, until=None, bysetpos=None, bymonth=None, bymonthday=None, byyearday=None, byeaster=None, byweekno=None, byweekday=None, byhour=None, byminute=None, bysecond=None, cache=False)[исходный код] -
Основа операции rrule. Принимает все ключевые слова, определённые в RFC, в качестве параметров конструктора (кроме byday, которое было переименовано в byweekday) и другие параметры. Прототип конструктора:
rrule(freq)
Где freq должен быть одним из YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY или SECONDLY.
Примечание
Согласно разделу 3.3.10 RFC, экземпляры повторения, попадающие на недействительные даты и время, игнорируются, а не принудительно корректируются:
Правила повторения могут генерировать экземпляры повторения с недействительной датой (например, 30 февраля) или отсутствующим локальным временем (например, 1:30 утра в день, когда локальное время переводится на час вперёд в 1:00 утра). Такие экземпляры повторения ДОЛЖНЫ быть проигнорированы и НЕ ДОЛЖНЫ учитываться в качестве части набора повторений.Это может привести к возможному неожиданному поведению, например, когда начальная дата наступает в конце месяца:
>>> from dateutil.rrule import rrule, MONTHLY >>> from datetime import datetime >>> start_date = datetime(2014, 12, 31) >>> list(rrule(freq=MONTHLY, count=4, dtstart=start_date)) ... [datetime.datetime(2014, 12, 31, 0, 0), datetime.datetime(2015, 1, 31, 0, 0), datetime.datetime(2015, 3, 31, 0, 0), datetime.datetime(2015, 5, 31, 0, 0)]
Кроме того, он поддерживает следующие ключевые параметры:
Параметры: - dtstart -- Начало повторения. Помимо того, что является основой для повторения, отсутствующие параметры в конечных экземплярах повторения также будут извлечены из этой даты. Если не указано, будет использовано datetime.now().
- interval -- Интервал между каждой итерацией freq. Например, при использовании YEARLY интервал 2 означает раз в два года, но при HOURLY он означает раз в два часа. Значение по умолчанию интервала — 1.
- wkst -- День начала недели. Должен быть одним из констант MO, TU, WE или целым числом, определяющим первый день недели. Это повлияет на повторения, основанные на еженедельных периодах. По умолчанию начало недели определяется calendar.firstweekday(), и может быть изменено calendar.setfirstweekday().
-
count --
Если задано, это определяет количество генерируемых повторений.
Примечание
С версии 2.5.0 использование ключевого слова
untilв сочетании сcountустарело, чтобы убедиться, чтоdateutilполностью соответствует RFC-5545 Sec. 3.3.10. Поэтомуuntilиcountне должны встречаться в одном вызовеrrule. -
until --
Если задано, это должен быть экземпляр datetime, определяющий верхнюю границу повторения. Последнее повторение в правиле — это наибольшая дата и время, которая меньше или равна значению, указанному в параметре
until.Примечание
С версии 2.5.0 использование ключевого слова
untilв сочетании сcountустарело, чтобы убедиться, чтоdateutilполностью соответствует RFC-5545 Sec. 3.3.10. Поэтомуuntilиcountне должны встречаться в одном вызовеrrule. - и т.д. (перевод остальных пунктов аналогично)
-
replace(**kwargs)[исходный код] -
Возвращает новое rrule с теми же атрибутами, за исключением тех, для которых заданы новые значения в ключевых аргументах.
-
matplotlib.dates.set_epoch(epoch)[исходный код] -
Устанавливает эпоху (начало отсчёта дат) для расчётов datetime.
По умолчанию эпоха —
rcParams["dates.epoch"](по умолчанию 1970-01-01T00:00).Если требуется точность до микросекунд, дата, отображаемая на графике, должна находиться примерно в пределах 70 лет от эпохи. Библиотека Matplotlib внутренне представляет даты как дни с момента эпохи, поэтому диапазон с плавающей точкой должен быть в пределах множителя 2^52.
set_epochдолжен быть вызван перед преобразованием любых дат (т.е. около раздела импорта), иначе будет поднята ошибка RuntimeError.См. также Точность дат и эпохи.
Параметры: - epochstr
-
действительная дата UTC, разбираемая с помощью
numpy.datetime64(не включайте часовой пояс).
© 2012–2021 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.4.3/api/dates_api.html