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 лет по обе стороны от эпохи, а для остального допустимого диапазона дат (с 0001 по 9999 год) — до 20 микросекунд. При необходимости эпоху можно изменить во время импорта с помощью dates.set_epoch или rcParams["date.epoch"] (по умолчанию: '1970-01-01T00:00:00'), указав другую дату; см. обсуждение в разделе Точность дат и эпохи.
Примечание
До Matplotlib 3.3 эпохой было 0000-12-31, что снижало точность до микросекунд для современных дат, а также приводило к тому, что значение 0 по умолчанию для предела оси не соответствовало допустимой дате и времени. В версии 3.3 эпоха была изменена, как описано выше. Чтобы преобразовать старые порядковые числа с плавающей точкой в новую эпоху, можно выполнить следующее:
new_ordinal = old_ordinal + mdates.date2num(np.datetime64('0000-12-31'))
Для преобразования объектов datetime в даты Matplotlib и обратно предусмотрен ряд вспомогательных функций:
Преобразовать строку с датой в datenum с помощью | |
Преобразовать объекты datetime в даты Matplotlib. | |
Преобразовать даты Matplotlib в объекты | |
Преобразовать количество дней в объект | |
Вернуть последовательность равномерно распределённых дат Matplotlib. | |
Задать эпоху (начало отсчёта дат) для вычислений с датами и временем. | |
Получить эпоху, используемую в |
Примечание
Как и Python в datetime.datetime, Matplotlib использует григорианский календарь для всех преобразований между датами и числами с плавающей точкой. Эта практика не является универсальной, и различия календарей могут приводить к расхождениям между количеством дней с 0001-01-01, которое вычисляют Python и Matplotlib, и результатами других программ и баз данных. Например, Военно-морская обсерватория США использует календарь, в котором переход от юлианского к григорианскому произошёл в октябре 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'), заданный в виде строки. Чтобы использовать другой часовой пояс, передайте именованный аргумент tz функции num2date любому создаваемому вами локатору или форматировщику делений с датами. Это может быть экземпляр datetime.tzinfo или строка с названием часового пояса, которую можно разобрать с помощью gettz.
Этот модуль предоставляет широкий набор специализированных и универсальных локаторов и форматировщиков делений с датами. Общие сведения о локаторах и форматировщиках делений см. в matplotlib.ticker. Они описаны ниже.
Модуль dateutil предоставляет дополнительный код для работы с делениями дат, упрощая размещение делений для дат любого типа. См. примеры ниже.
Локаторы делений с датами
Большинство локаторов делений с датами могут размещать одно или несколько делений. Например:
# import constants for the days of the week from matplotlib.dates import MO, TU, WE, TH, FR, SA, SU # tick on Mondays every week loc = WeekdayLocator(byweekday=MO, tz=tz) # tick on Mondays and Saturdays loc = WeekdayLocator(byweekday=(MO, SA))
Кроме того, большинство конструкторов принимают аргумент interval:
# tick on Mondays every second week loc = WeekdayLocator(byweekday=MO, interval=2)
Локатор rrule позволяет задавать деления дат практически произвольным образом:
# tick every 5th easter rule = rrulewrapper(YEARLY, byeaster=1, interval=5) loc = RRuleLocator(rule)
Доступны следующие локаторы делений с датами:
-
MicrosecondLocator: размещает деления с шагом в микросекунды. -
SecondLocator: размещает деления с шагом в секунды. -
MinuteLocator: размещает деления с шагом в минуты. -
HourLocator: размещает деления с шагом в часы. -
DayLocator: размещает деления в указанные дни месяца. -
WeekdayLocator: размещает деления по дням недели, например MO, TU. -
MonthLocator: размещает деления по месяцам, например 7 для июля. -
YearLocator: размещает деления по годам, кратным base. -
RRuleLocator: размещает деления с помощьюrrulewrapper.rrulewrapper— это простая оболочка над dateutildateutil.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)[исходный код]
-
Базовый класс:
FormatterFormatter, который пытается определить подходящий формат. Наиболее полезен при использовании сAutoDateLocator.AutoDateFormatterсодержит словарь.scale, сопоставляющий масштабы делений (интервал в днях между соседними основными делениями) строкам формата; по умолчанию этот словарь имеет видself.scaled = { DAYS_PER_YEAR: rcParams['date.autoformatter.year'], DAYS_PER_MONTH: rcParams['date.autoformatter.month'], 1: rcParams['date.autoformatter.day'], 1 / HOURS_PER_DAY: rcParams['date.autoformatter.hour'], 1 / MINUTES_PER_DAY: rcParams['date.autoformatter.minute'], 1 / SEC_PER_DAY: rcParams['date.autoformatter.second'], 1 / MUSECONDS_PER_DAY: rcParams['date.autoformatter.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 или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Часовой пояс делений. Если tz задан как строка, он передаётся в
dateutil.tz. - 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)[исходный код]
-
Базовый класс:
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
- Параметры:
-
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Часовой пояс делений. Если tz задан как строка, он передаётся в
dateutil.tz. - minticksint
-
Желаемое минимальное количество делений; определяет, будут ли деления годичными, месячными и т. д.
- maxticksint
-
Желаемое максимальное количество делений; определяет интервал между делениями (через одно, через каждые 3 и т. д.). Для более точной настройки можно передать словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т. д.) с собственным максимальным количеством делений. Это позволяет поддерживать подходящее число делений для формата, выбранного в
AutoDateFormatter. Для частот, не указанных в этом словаре, используется значение по умолчанию. - interval_multiplesbool, по умолчанию: True
-
Следует ли выбирать деления кратно интервалу, размещая их в более удобных положениях. Например, при размещении почасовых делений с интервалом в 6 часов деления будут принудительно установлены на отметках 0, 6, 12 и 18 часов.
-
tzstr или
- get_locator(dmin, dmax)[исходный код]
-
Выбрать подходящий локатор на основе расстояния.
- nonsingular(vmin, vmax)[исходный код]
-
С учётом предложенных верхней и нижней границ скорректировать диапазон, если он слишком близок к вырожденному (то есть диапазону около 0).
- tick_values(vmin, vmax)[исходный код]
-
Вернуть значения найденных делений для заданных vmin и vmax.
Примечание
Чтобы получить положения делений, автоматически определив значения vmin и vmax для связанного
axis, просто вызовите экземпляр Locator:>>> 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)[исходный код]
-
Базовый класс:
DateConverter
- classmatplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True, *, usetex=None)[исходный код]
-
Базовые классы:
FormatterFormatter, который пытается определить наилучший формат для даты и сделать его как можно компактнее, сохраняя при этом полноту. Особенно полезен при использовании сAutoDateLocator:>>> locator = AutoDateLocator() >>> formatter = ConciseDateFormatter(locator)
- Параметры:
-
-
locator
ticker.Locator -
Локатор, используемый этой осью.
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений, передаваемый в
dates.num2date. - formatsсписок из 6 строк, необязательно
-
Строки формата для 6 уровней подписей делений: обычно это годы, месяцы, дни, часы, минуты и секунды. В строках используются те же коды формата, что и в
strftime. Значение по умолчанию:['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f'] - zero_formatsсписок из 6 строк, необязательно
-
Строки формата для подписей делений, которые являются «нулевыми» для данного уровня делений. Например, если большинство делений соответствуют месяцам, деления около 1 января 2005 года будут подписаны как «Dec», «2005», «Feb». Значение по умолчанию:
['', '%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
(
Source code,2x.png,png)Автоматически форматирует подписи дат. Сначала для создания исходной строки используется формат по умолчанию, затем удаляются избыточные элементы.
- format_data_short(value)[исходный код]
-
Возвращает краткую строку, представляющую значение деления.
По умолчанию возвращает длинное значение, не зависящее от положения.
- format_ticks(values)[исходный код]
-
Возвращает подписи всех делений за один вызов.
- get_offset()[исходный код]
- classmatplotlib.dates.DateConverter(*, interval_multiples=True)[исходный код]
-
Базовые классы:
ConversionInterfaceКонвертер для данных типа
datetime.dateиdatetime.datetimeили для данных даты и времени, представленных в виде, в который их преобразуетdate2num.Тег «unit» для таких данных — None или экземпляр
tzinfo.- axisinfo(unit, axis)[исходный код]
-
Возвращает
AxisInfoдля unit.unit — это экземпляр
tzinfoили None. Аргумент axis обязателен, но не используется.
- staticconvert(value, unit, axis)[исходный код]
-
Если value не является числом или последовательностью чисел, преобразует его с помощью
date2num.Аргументы unit и axis не используются.
- staticdefault_units(x, axis)[исходный код]
-
Возвращает экземпляр
tzinfoдля x или его первого элемента либо None
- classmatplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[исходный код]
-
Базовые классы:
FormatterФорматирует деление (в днях с начала эпохи) с помощью строки формата
strftime.- Параметры:
-
- fmtstr
-
Строка формата
strftime -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если tz — строка, она передаётся в
dateutil.tz. -
usetexbool, по умолчанию:
rcParams["text.usetex"](значение по умолчанию:False) -
Включить или отключить использование математического режима TeX для отображения результатов форматтера.
- set_tzinfo(tz)[исходный код]
- classmatplotlib.dates.DateLocator(tz=None)[исходный код]
-
Базовые классы:
LocatorОпределяет расположение делений при построении графиков дат.
Этот класс служит базовым для других локаторов и не предназначен для самостоятельного использования.
- Параметры:
-
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если tz — строка, она передаётся в
dateutil.tz.
-
tzstr или
- datalim_to_dt()[исходный код]
-
Преобразует интервал данных оси в объекты datetime.
- hms0d={'byhour': 0, 'byminute': 0, 'bysecond': 0}
- nonsingular(vmin, vmax)[исходный код]
-
Получив предложенные верхнюю и нижнюю границы, корректирует диапазон, если он слишком близок к вырожденному (то есть имеет ширину около 0).
- set_tzinfo(tz)[исходный код]
-
Задаёт сведения о часовом поясе.
- Параметры:
-
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если tz — строка, она передаётся в
dateutil.tz.
-
tzstr или
- viewlim_to_dt()[исходный код]
-
Преобразует интервал отображения в объекты datetime.
- classmatplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[исходный код]
-
Базовые классы:
RRuleLocatorРазмещает деления в указанные дни месяца. Например, 1, 15, 30.
- Параметры:
-
- bymonthdayint или список значений int, по умолчанию: все дни
-
Деления будут размещаться в каждый день, указанный в bymonthday. По умолчанию используется
bymonthday=range(1, 32), то есть каждый день месяца. - intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждое второе вхождение. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если tz — строка, она передаётся в
dateutil.tz.
- classmatplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[исходный код]
-
Базовые классы:
RRuleLocatorРазмещает деления в указанные часы.
- Параметры:
-
- byhourint или список значений int, по умолчанию: все часы
-
Деления будут размещаться в каждый час, указанный в byhour. По умолчанию используется
byhour=range(24), то есть каждый час. - intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждое второе вхождение. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если tz — строка, она передаётся в
dateutil.tz.
- classmatplotlib.dates.MicrosecondLocator(interval=1, tz=None)[исходный код]
-
Базовые классы:
DateLocatorРазмещает деления с регулярными интервалами в одну или несколько микросекунд.
Примечание
По умолчанию Matplotlib использует представление времени с плавающей точкой в днях с начала эпохи, поэтому построение графиков данных с микросекундным разрешением времени плохо работает для дат, удалённых от начала эпохи примерно на 70 лет (проверьте с помощью
get_epoch).Для графиков времени с разрешением менее микросекунды настоятельно рекомендуется использовать секунды с плавающей точкой, а не представление времени, подобное datetime.
Если вам необходимо использовать datetime.datetime() или аналогичный тип и при этом нужна микросекундная точность, измените начало отсчёта времени с помощью
dates.set_epoch, задав значение ближе к датам, отображаемым на графике. См. Точность дат и эпохи.- Параметры:
-
- intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждое второе вхождение. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если tz — строка, она передаётся в
dateutil.tz.
- set_axis(axis)[исходный код]
- tick_values(vmin, vmax)[исходный код]
-
Возвращает значения найденных делений для заданных vmin и vmax.
Примечание
Чтобы получить расположение делений с автоматически заданными значениями vmin и vmax для соответствующего
axis, просто вызовите экземпляр Locator:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- classmatplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[исходный код]
-
Базовые классы:
RRuleLocatorРазмещает деления в указанные минуты.
- Параметры:
-
- byminuteint или список значений int, по умолчанию: все минуты
-
Деления будут размещаться в каждую минуту, указанную в byminute. По умолчанию используется
byminute=range(60), то есть каждую минуту. - intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждое второе вхождение. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если tz — строка, она передаётся в
dateutil.tz.
- classmatplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[исходный код]
-
Базовые классы:
RRuleLocatorСоздает деления для каждого месяца, например, 1, 3, 12.
- Параметры:
-
- bymonthint или list of int, по умолчанию: все месяцы
-
Деления будут размещены в каждом месяце из bymonth. По умолчанию используется
range(1, 13), то есть каждый месяц. - bymonthdayint, по умолчанию: 1
-
День, в который следует разместить деления.
- intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждое второе вхождение. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если это строка, tz передается в
dateutil.tz.
- classmatplotlib.dates.RRuleLocator(o, tz=None)[исходный код]
-
Базовые классы:
DateLocator- Параметры:
-
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если это строка, tz передается в
dateutil.tz.
-
tzstr или
- staticget_unit_generic(freq)[исходный код]
- tick_values(vmin, vmax)[исходный код]
-
Возвращает значения найденных делений для заданных 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)[исходный код]
-
Базовые классы:
RRuleLocatorСоздает деления для каждого вхождения секунды.
- Параметры:
-
- bysecondint или list of int, по умолчанию: все секунды
-
Деления будут размещены для каждой секунды из bysecond. По умолчанию используется
bysecond = range(60), то есть каждая секунда. - intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждое второе вхождение. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если это строка, tz передается в
dateutil.tz.
- classmatplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None)[исходный код]
-
Базовые классы:
RRuleLocatorСоздает деления для каждого вхождения дня недели.
- Параметры:
-
- byweekdayint или list of int, по умолчанию: все дни
-
Деления будут размещены для каждого дня недели из byweekday. По умолчанию используется каждый день.
Элементами byweekday должны быть MO, TU, WE, TH, FR, SA, SU — константы из
dateutil.rrule, импортированные в пространство именmatplotlib.dates. - intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждое второе вхождение. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если это строка, tz передается в
dateutil.tz.
- classmatplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[исходный код]
-
Базовые классы:
RRuleLocatorСоздает деления в заданный день каждого года, кратного base.
Примеры:
# Tick every year on Jan 1st locator = YearLocator() # Tick every 5 years on July 4th locator = YearLocator(5, month=7, day=4)
- Параметры:
-
- baseint, по умолчанию: 1
-
Отмечать деления каждые base лет.
- monthint, по умолчанию: 1
-
Месяц, в который следует разместить деления, начиная с 1. По умолчанию — январь.
- dayint, по умолчанию: 1
-
День, в который следует разместить деления.
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если это строка, tz передается в
dateutil.tz.
- matplotlib.dates.date2num(d)[исходный код]
-
Преобразует объекты datetime в даты Matplotlib.
- Параметры:
-
-
d
datetime.datetimeилиnumpy.datetime64или последовательности таких объектов
-
d
- Возвращает:
-
- float или последовательность 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)[исходный код]
-
Преобразует строку с датой в числовое представление даты с помощью
dateutil.parser.parse.- Параметры:
-
- dstr или последовательность str
-
Даты для преобразования.
- defaultdatetime.datetime, необязательный
-
Дата по умолчанию, используемая, если в d отсутствуют поля.
- matplotlib.dates.drange(dstart, dend, delta)[исходный код]
-
Возвращает последовательность равномерно распределенных дат Matplotlib.
Даты начинаются с dstart и доходят до dend, не включая ее. Интервал между ними задается параметром delta.
- Параметры:
-
-
dstart, dend
datetime -
Границы дат.
-
delta
datetime.timedelta -
Интервал между датами.
-
dstart, dend
- Возвращает:
-
numpy.array-
Список значений float, представляющих даты Matplotlib.
- matplotlib.dates.get_epoch()[исходный код]
-
Возвращает эпоху, используемую
dates.- Возвращает:
-
- epochstr
-
Строка, задающая эпоху (должна разбираться с помощью
numpy.datetime64).
- matplotlib.dates.num2date(x, tz=None)[исходный код]
-
Преобразует даты Matplotlib в объекты
datetime.- Параметры:
-
- xfloat или последовательность float
-
Количество дней (дробная часть представляет часы, минуты и секунды) с начала эпохи. См.
get_epoch, чтобы узнать эпоху. Ее можно изменить с помощьюrcParams["date.epoch"](значение по умолчанию:'1970-01-01T00:00:00') илиset_epoch. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс для x. Если это строка, tz передается в
dateutil.tz.
- Возвращает:
-
-
datetimeили последовательность объектовdatetime -
Даты возвращаются в часовом поясе tz.
Если x — последовательность, будет возвращена последовательность объектов
datetime.
-
Примечания
Предполагается григорианский календарь; это не общепринятая практика. Подробности см. в строке документации модуля.
- matplotlib.dates.num2timedelta(x)[исходный код]
-
Преобразует количество дней в объект
timedelta.Если x — последовательность, будет возвращена последовательность объектов
timedelta.- Параметры:
-
- xfloat, последовательность float
-
Количество дней. Дробная часть представляет часы, минуты и секунды.
- Возвращает:
-
-
datetime.timedeltaили list[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)
-
Базовые классы:
objectТип relativedelta предназначен для применения к существующему объекту datetime: он может заменить отдельные компоненты этого объекта или представлять временной интервал.
В его основу положена спецификация превосходной работы М.-А. Лембурга, реализованной в расширении mx.DateTime. Однако обратите внимание, что этот тип НЕ реализует тот же алгоритм, что и его работа. Не ОЖИДАЙТЕ, что он будет вести себя так же, как соответствующий тип в mx.DateTime.
Создать экземпляр relativedelta можно двумя разными способами. Первый — передать ему два класса даты/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 часов, в результате чего получается второе число и 14-й час. Наконец, применяется weekday, но поскольку второе число уже приходится на понедельник, это ничего не меняет.
- normalized()
-
Возвращает версию этого объекта, в которой относительные атрибуты представлены только целыми значениями.
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
- Возвращает:
-
Возвращает объект
dateutil.relativedelta.relativedelta.
- propertyweeks
- classmatplotlib.dates.rrulewrapper(freq, tzinfo=None, **kwargs)[источник]
-
Базовый класс:
objectПростая обёртка над
dateutil.rrule, позволяющая гибко задавать отметки дат.- Параметры:
-
- freq{YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY}
-
Частота отметок. Эти константы определены в
dateutil.rrule, но также доступны изmatplotlib.dates. -
tzinfo
datetime.tzinfo, необязательный -
Информация о часовом поясе. По умолчанию — None.
- **kwargs
-
Дополнительные именованные аргументы передаются в
dateutil.rrule.
- set(**kwargs)[источник]
-
Задать параметры для существующей обёртки.
- matplotlib.dates.set_epoch(epoch)[источник]
-
Задать эпоху (начало отсчёта дат) для вычислений с датами и временем.
Эпоха по умолчанию —
rcParams["date.epoch"](по умолчанию:'1970-01-01T00:00:00').Для обеспечения точности до микросекунд дата на графике должна находиться примерно в пределах 70 лет от эпохи. Matplotlib внутренне представляет даты как количество дней с эпохи, поэтому динамический диапазон чисел с плавающей точкой должен укладываться в коэффициент 2^52.
set_epochнеобходимо вызвать до преобразования каких-либо дат (то есть рядом с разделом импорта), иначе будет вызвано исключение RuntimeError.См. также Точность дат и эпохи.
- Параметры:
-
- epochstr
-
корректная дата UTC, разбираемая с помощью
numpy.datetime64(не указывайте часовой пояс).
© 2012–2026 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/dates_api.html