matplotlib.dates
Модуль matplotlib предоставляет расширенные возможности для работы с датами в графиках, опираясь на возможности модуля python datetime и дополнительных модулей dateutil.
По умолчанию, Matplotlib использует механизм единиц, описанный в units, для преобразования объектов datetime.datetime и numpy.datetime64 при их отображении на осях x или y. Пользователю не нужно ничего делать для форматирования дат, но часто для дат требуются строгие форматы, поэтому данный модуль предоставляет множество разместителей и форматеров осей. Пример с использованием numpy.datetime64:
import numpy as np
times = np.arange(np.datetime64('2001-01-02'),
np.datetime64('2002-02-03'), np.timedelta64(75, 'm'))
y = np.random.randn(len(times))
fig, ax = plt.subplots()
ax.plot(times, y)
См. также
Формат дат в 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 недопустимым значением datetime. В версии 3.3 эпоха была изменена, как указано выше. Для преобразования старых порядковых чисел с плавающей точкой в новую эпоху пользователи могут сделать следующее:
new_ordinal = old_ordinal + mdates.date2num(np.datetime64('0000-12-31'))
Существует ряд вспомогательных функций для преобразования между объектами datetime и датами Matplotlib:
Преобразование строки даты в datenum с использованием | |
Преобразование объектов datetime в даты Matplotlib. | |
Преобразование дат Matplotlib в объекты | |
Преобразование количества дней в объект | |
Возвращает последовательность равноотстоящих дат Matplotlib. | |
Устанавливает эпоху (начало отсчёта для дат) для вычислений datetime. | |
Получает эпоху, используемую модулем |
Примечание
Как и в Python's datetime.datetime, Matplotlib использует григорианский календарь для всех преобразований между датами и числами с плавающей точкой. Такая практика не является универсальной, и различия в календарях могут привести к путанице между тем, что Python и Matplotlib возвращают как количество дней с 0001-01-01, и результатами, полученными другими программами и базами данных. Например, US Naval Observatory использует календарь, который переключается с юлианского на григорианский в октябре 1582 года. Поэтому, используя их калькулятор, количество дней между 0001-01-01 и 2006-04-01 составляет 732403, в то время как используя григорианский календарь через модуль datetime, мы получаем:
In [1]: date(2006, 4, 1).toordinal() - date(1, 1, 1).toordinal() Out[1]: 732401
Все преобразователи, разместители и форматеры дат Matplotlib учитывают часовые пояса. Если явный часовой пояс не указан, используется rcParams["timezone"] (по умолчанию: 'UTC'). Если вы хотите использовать пользовательский часовой пояс, передайте экземпляр datetime.tzinfo со значением tz в качестве аргумента к num2date, Axis.axis_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.
- classmatplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d', *, usetex=None)[source]
Bases:
matplotlib.ticker.FormatterФорматировщик, который пытается определить лучший формат для использования. Это наиболее полезно при использовании с
AutoDateLocator.AutoDateFormatterимеет словарь.scale, который сопоставляет масштабы делений (интервал в днях между основными делениями) со строками формата; этот словарь по умолчаниюself.scaled = { DAYS_PER_YEAR: rcParams['date.autoformat.year'], DAYS_PER_MONTH: rcParams['date.autoformat.month'], 1: 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
Вместо строк формата также можно использовать пользовательские вызываемые функции. Следующий пример демонстрирует, как использовать пользовательскую функцию форматирования для удаления хвостовых нулей от десятичных секунд и добавления даты к первой метке деления:
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 formatter.scaled[1/(24*60)] = my_format_functionАвтоматическое форматирование меток дат.
- Параметры
- locator
ticker.Locator Локатор, используемый этой осью.
- tzstr, необязательно
Передаётся в
dates.date2num.- defaultfmtstr
Формат по умолчанию для использования, если ни одно из значений в
self.scaledне больше единицы, возвращаемойlocator._get_unit().- usetexbool, по умолчанию:
rcParams["text.usetex"](по умолчанию:False) Включить/выключить использование математического режима TeX для отображения результатов форматировщика. Если какие-либо записи в
self.scaledустановлены как функции, то предоставленная пользовательская функция отвечает за включение или выключение математического режима TeX.
- locator
- classmatplotlib.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
- Параметры
- tz
datetime.tzinfo Временная зона делений.
- minticksint
Минимальное количество делений; управляет тем, будут ли деления ежегодными, ежемесячными и т. д.
- maxticksint
Максимальное количество делений; управляет интервалом между делениями (каждые другое, каждые 3 и т. д.). Для точного управления это может быть словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т. д.) с их собственным максимальным числом делений. Это можно использовать для поддержания количества делений, соответствующего формату, выбранному в
AutoDateFormatter. Любая частота, не указанная в этом словаре, получает значение по умолчанию.- interval_multiplesbool, по умолчанию: True
Указывает, должны ли деления выбираться кратными интервалам, фиксируя их в «более удобных» местах. Например, это заставит деления находиться в часах 0, 6, 12, 18 при ежечасном делении с интервалом 6 часов.
- tz
- get_locator(dmin, dmax)[source]
Выбирает лучший локатор на основе расстояния.
- nonsingular(vmin, vmax)[source]
Исходя из предложенных верхнего и нижнего пределов, корректирует диапазон, если он слишком близок к однородному диапазону (т. е. диапазон ~0).
- tick_values(vmin, vmax)[source]
Возвращает значения расположенных делений, заданных vmin и vmax.
Примечание
Чтобы получить расположения делений с автоматически определёнными значениями vmin и vmax для сопутствующего
axis, просто вызовите экземпляр локатора:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- classmatplotlib.dates.ConciseDateConverter(formats=None, zero_formats=None, offset_formats=None, show_offset=True, *, interval_multiples=True)[source]
-
Bases:
matplotlib.dates.DateConverter- axisinfo(unit, axis)[source]
-
Возвращает
AxisInfoдля unit.unit — экземпляр tzinfo или None. Аргумент axis обязателен, но не используется.
- classmatplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True, *, usetex=None)[source]
-
Bases:
matplotlib.ticker.FormatterA
Formatterкоторый пытается определить лучший формат даты и сделать его максимально компактным, но при этом полным. Это наиболее полезно при использовании сAutoDateLocator:>>> locator = AutoDateLocator() >>> formatter = ConciseDateFormatter(locator)
- Параметры
-
-
locator
ticker.Locator -
Используемый локером.
- tzstr, необязательно
-
Передаётся в
dates.date2num. - formatsсписок из 6 строк, необязательно
-
Строки форматирования для 6 уровней подписей тиков: в основном годы, месяцы, дни, часы, минуты и секунды. Строки используют те же коды форматирования, что и
strftime. По умолчанию['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f'] - zero_formatsсписок из 6 строк, необязательно
-
Строки форматирования для меток тиков, которые являются «нулями» для данного уровня тиков. Например, если большинство тиков — месяцы, тики около 1 января 2005 года будут помечены «дек», «2005», «фев». По умолчанию
['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M'] - offset_formatsсписок из 6 строк, необязательно
-
Строки форматирования для 6 уровней, которые применяются к строке «смещения», найденной справа от оси x или сверху от оси y. В сочетании с метками тиков это должно полностью указать дату. По умолчанию:
['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
- show_offsetbool, по умолчанию: True
-
Отображать смещение или нет.
-
usetexbool, по умолчанию:
rcParams["text.usetex"](по умолчанию:False) -
Включить/выключить использование математического режима TeX для рендеринга результатов форматирования.
-
locator
Примеры
См. Форматирование меток тиков даты с помощью ConciseDateFormatter
(Исходный код, png, pdf)
Автоматическое форматирование меток даты. Используется формат по умолчанию для создания начальной строки, а затем удаляются избыточные элементы.
- format_data_short(value)[source]
-
Возвращает короткую строковую версию значения тика.
По умолчанию используется длинное значение, независимое от позиции.
- format_ticks(values)[source]
-
Возвращает метки тиков для всех тиков сразу.
- get_offset()[source]
- classmatplotlib.dates.DateConverter(*, interval_multiples=True)[source]
-
Bases:
matplotlib.units.ConversionInterfaceКонвертер для данных
datetime.dateиdatetime.datetime, или для данных даты/времени, представленных так, как они будут преобразованыdate2num.Тег 'unit' для таких данных — None или экземпляр tzinfo.
- axisinfo(unit, axis)[source]
-
Возвращает
AxisInfoдля unit.unit — экземпляр tzinfo или None. Аргумент axis обязателен, но не используется.
- staticconvert(value, unit, axis)[source]
-
Если value ещё не число или последовательность чисел, преобразует его с помощью
date2num.Аргументы unit и axis не используются.
- staticdefault_units(x, axis)[source]
-
Возвращает экземпляр tzinfo для x или для его первого элемента, или None.
- classmatplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[source]
-
Bases:
matplotlib.ticker.FormatterФорматирует отметку (в днях с эпохи) с помощью строки форматирования
strftime.- Параметры
-
- fmtstr
-
Строка форматирования
strftime -
tz
datetime.tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Часовой пояс отметки.
-
usetexbool, по умолчанию:
rcParams["text.usetex"](по умолчанию:False) -
Включить/выключить использование TeX'овского математического режима для рендеринга результатов форматировщика.
- set_tzinfo(tz)[source]
- classmatplotlib.dates.DateLocator(tz=None)[source]
-
Bases:
matplotlib.ticker.LocatorОпределяет местоположения отметки при построении графиков дат.
Этот класс наследуется другими локейторами и не предназначен для непосредственного использования.
- Параметры
-
-
tz
datetime.tzinfo
-
tz
- 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.
- classmatplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[source]
-
Bases:
matplotlib.dates.RRuleLocatorСоздаёт отметки на днях месяца. Например, 1, 15, 30.
Помечает каждый день в bymonthday; bymonthday может быть целым числом или последовательностью.
По умолчанию, отметки ставятся на каждый день месяца:
bymonthday=range(1, 32).
- классmatplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[source]
-
Базы:
matplotlib.dates.RRuleLocatorСоздавать метки на каждом часу.
Отмечать каждый час в byhour; byhour может быть целым числом или последовательностью. По умолчанию отмечается каждый час:
byhour=range(24)interval — интервал между каждой итерацией. Например, если
interval=2, отмечать каждую вторую.
- классmatplotlib.dates.MicrosecondLocator(interval=1, tz=None)[source]
-
Базы:
matplotlib.dates.DateLocatorСоздавать метки с регулярными интервалами в одну или несколько микросекунд.
Примечание
По умолчанию Matplotlib использует представление времени с плавающей запятой в днях с начала эпохи, поэтому построение данных с разрешением по микросекундам не работает хорошо для дат, удалённых (примерно на 70 лет) от эпохи (проверьте с помощью
get_epoch).Если вам нужны графики с разрешением ниже микросекунды, настоятельно рекомендуется использовать время с плавающей точкой в секундах, а не представление времени в формате datetime.
Если вам действительно необходимо использовать datetime.datetime() или подобное и всё же нужна точность до микросекунды, измените начало отсчёта времени с помощью
dates.set_epochна значение, более близкое к отображаемым датам. См. Точность дат и эпохи.interval — интервал между каждой итерацией. Например, если
interval=2, отмечать каждую вторую микросекунду.- set_axis(axis)[source]
- set_data_interval(vmin, vmax)[source]
-
[Устарело]
Примечания
Устарело начиная с версии 3.5:
- set_view_interval(vmin, vmax)[source]
-
[Устарело]
Примечания
Устарело начиная с версии 3.5:
- tick_values(vmin, vmax)[source]
-
Возвращает значения размеченных меток, заданных vmin и vmax.
Примечание
Чтобы получить позиции меток с автоматически заданными значениями vmin и vmax для соответствующего
axis, просто вызовите экземпляр Locator:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- классmatplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[source]
-
Базы:
matplotlib.dates.RRuleLocatorСоздавать метки на каждом часу.
Отмечать каждую минуту в byminute; byminute может быть целым числом или последовательностью. По умолчанию отмечается каждая минута:
byminute=range(60)interval — интервал между каждой итерацией. Например, если
interval=2, отмечать каждую вторую.
- классmatplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[source]
-
Базы:
matplotlib.dates.RRuleLocatorСоздавать метки на каждом месяце, например, 1, 3, 12.
Отмечать каждый месяц в bymonth; bymonth может быть целым числом или последовательностью. По умолчанию
range(1, 13), т.е. каждый месяц.interval — интервал между каждой итерацией. Например, если
interval=2, отмечать каждую вторую.
- классmatplotlib.dates.RRuleLocator(o, tz=None)[source]
-
Базы:
matplotlib.dates.DateLocator- Параметры
-
-
tz
datetime.tzinfo
-
tz
- статическийget_unit_generic(freq)[source]
- tick_values(vmin, vmax)[source]
-
Возвращает значения размеченных меток, заданных vmin и vmax.
Примечание
Чтобы получить позиции меток с автоматически заданными значениями vmin и vmax для соответствующего
axis, просто вызовите экземпляр Locator:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- classmatplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[source]
-
Bases:
matplotlib.dates.RRuleLocatorСоздаёт метки на каждом вхождении секунды.
Отмечает каждую секунду в bysecond; bysecond может быть целым числом или последовательностью. По умолчанию метки ставятся на каждой секунде:
bysecond = range(60)interval — интервал между каждым итерацией. Например, если
interval=2, метки ставятся на каждую вторую секунду.
- classmatplotlib.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отображает каждую вторую неделю.
- classmatplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[source]
-
Bases:
matplotlib.dates.RRuleLocatorСоздаёт метки на заданный день каждого года, кратного base.
Примеры:
# Tick every year on Jan 1st locator = YearLocator() # Tick every 5 years on July 4th locator = YearLocator(5, month=7, day=4)
Отмечает годы, кратные base, в заданный месяц и день (по умолчанию 1 января).
- matplotlib.dates.date2num(d)[source]
-
Преобразует объекты datetime в даты Matplotlib.
- Parameters
-
-
d
datetime.datetimeилиnumpy.datetime64или последовательности этих типов
-
d
- Returns
-
- Число с плавающей точкой или последовательность таких чисел
-
Количество дней, прошедших с эпохи. Смотрите
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.- Parameters
-
- dстрока или последовательность строк
-
Даты для преобразования.
- defaultdatetime.datetime, необязательно
-
Значение по умолчанию для даты, если поля в d отсутствуют.
- matplotlib.dates.drange(dstart, dend, delta)[source]
-
Возвращает последовательность равномерно распределённых дат Matplotlib.
Даты начинаются с dstart и достигают, но не включают dend. Они разделены интервалом delta.
- Parameters
-
-
dstart, dend
datetime -
Пределы дат.
-
delta
datetime.timedelta -
Интервал дат.
-
dstart, dend
- Returns
-
numpy.array-
Список чисел с плавающей точкой, представляющих даты Matplotlib.
- matplotlib.dates.epoch2num(e)[source]
-
[Устарело] Преобразует время UNIX в количество дней, прошедших с эпохи Matplotlib.
- Parameters
-
- eсписок чисел с плавающей точкой
-
Время в секундах с 1970-01-01.
- Returns
-
numpy.array-
Время в днях с эпохи Matplotlib (см.
get_epoch()).
Примечания
Устарело начиная с версии 3.5.
- matplotlib.dates.get_epoch()[source]
-
Возвращает эпоху, используемую модулем
dates.- Returns
-
- epochстрока
-
Строка эпохи (разбираемая функцией
numpy.datetime64).
- matplotlib.dates.num2date(x, tz=None)[source]
-
Преобразовать даты Matplotlib в объекты
datetime.- Parameters
-
- xfloat или последовательность чисел с плавающей точкой
-
Количество дней (дробная часть представляет часы, минуты, секунды) с момента эпохи. См.
get_epochдля эпохи, которая может быть изменена с помощьюrcParams["date.epoch"](по умолчанию:'1970-01-01T00:00:00') илиset_epoch. -
tzстрока, по умолчанию:
rcParams["timezone"](по умолчанию:'UTC') -
Временная зона для x.
- Returns
-
-
datetimeили последовательностьdatetime -
Даты возвращаются в временной зоне tz.
Если x является последовательностью, возвращается последовательность объектов
datetime.
-
Примечания
Добавление единицы здесь — историческая особенность. Также следует учитывать, что используется григорианский календарь; это не является универсальной практикой. Подробнее см. в строке документации модуля.
- matplotlib.dates.num2epoch(d)[source]
-
[Устарело] Преобразовать дни с момента эпохи Matplotlib в время Unix.
- Parameters
-
- dсписок чисел с плавающей точкой
-
Время в днях с момента эпохи Matplotlib (см.
get_epoch()).
- Returns
-
numpy.array-
Время в секундах с 1970-01-01.
Примечания
Устарело начиная с версии 3.5.
- matplotlib.dates.num2timedelta(x)[source]
-
Преобразовать количество дней в объект
timedelta.Если x является последовательностью, возвращается последовательность объектов
timedelta.- Parameters
-
- xчисло с плавающей точкой, последовательность чисел с плавающей точкой
-
Количество дней. Дробная часть представляет часы, минуты, секунды.
- Returns
-
-
datetime.timedeltaили список[datetime.timedelta]
-
- classmatplotlib.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)
-
Bases:
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)
- Returns
-
Возвращает объект
dateutil.relativedelta.relativedelta.
- propertyweeks
- classmatplotlib.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)
-
Bases:
dateutil.rrule.rrulebaseЭто основа операции rrule. Она принимает все ключевые слова, определённые в RFC, в качестве параметров конструктора (кроме byday, которое было переименовано в byweekday), и ещё больше. Прототип конструктора:
rrule(freq)
Где freq должно быть одним из YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY или SECONDLY.
Примечание
В соответствии со статьёй 3.3.10 RFC, случаи повторения, попадающие на недействительные даты и время, игнорируются, а не принудительно корректируются:
Правила повторения могут генерировать случаи повторения с недействительной датой (например, 30 февраля) или несуществующим местным временем (например, 1:30 утра в день, когда местное время переводится вперёд на час в 1:00 утра). Такие случаи повторения ДОЛЖНЫ игнорироваться и НЕ ДОЛЖНЫ учитываться как часть набора повторений.
Это может привести к потенциально неожиданному поведению, когда, например, дата начала находится в конце месяца:
>>> from dateutil.rrule import rrule, MONTHLY >>> from datetime import datetime >>> start_date = datetime(2014, 12, 31) >>> list(rrule(freq=MONTHLY, count=4, dtstart=start_date)) ... [datetime.datetime(2014, 12, 31, 0, 0), datetime.datetime(2015, 1, 31, 0, 0), datetime.datetime(2015, 3, 31, 0, 0), datetime.datetime(2015, 5, 31, 0, 0)]
Кроме того, она поддерживает следующие ключевые аргументы:
- Параметры
-
- dtstart -- Дата начала повторения. Помимо того, что она служит основой для повторения, отсутствующие параметры в конечных случаях повторения также будут извлечены из этой даты. Если не указано, используется datetime.now().
- interval -- Интервал между каждой итерацией freq. Например, при использовании YEARLY, интервал 2 означает раз в два года, но с HOURLY — раз в два часа. Значение по умолчанию — 1.
- wkst -- День начала недели. Должно быть одним из констант MO, TU, WE или целым числом, определяющим первый день недели. Это повлияет на повторения, основанные на еженедельных периодах. Значение по умолчанию для начала недели взято из calendar.firstweekday(), и может быть изменено с помощью calendar.setfirstweekday().
-
count --
Если задано, это определяет, сколько случаев повторения будет сгенерировано.
Примечание
Начиная с версии 2.5.0, использование ключевого слова
untilв сочетании сcountустарело, чтобы убедиться, чтоdateutilполностью соответствует RFC-5545 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. - 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)
-
Возвращает новое 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–2021 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.5.1/api/dates_api.html