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 недопустимой датой. В версии 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))
Кроме того, большинство конструкторов принимают аргумент интервала:
# 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: размещать метки с помощьюrrulewrapper.rrulewrapper— это простая оболочка вокруг dateutil иdateutil.rrule, позволяющая задавать практически любые метки дат. См. пример rrule. -
AutoDateLocator: при автоматическом масштабировании этот класс выбирает наилучшийDateLocator(например,RRuleLocator) для установки пределов отображения и расположения меток. Если вызван сinterval_multiples=True, он выравнивает метки по подходящим кратным интервала. Например, при интервале в 4 часа он выберет в качестве меток часы 0, 4, 8 и т. д. По умолчанию такое поведение не гарантируется.
Форматирование дат
Доступны следующие форматировщики дат:
-
AutoDateFormatter: пытается определить наилучший формат. Наиболее полезен в сочетании сAutoDateLocator. -
ConciseDateFormatter: также пытается определить наилучший формат и сделать его максимально компактным, сохраняя при этом полную информацию о дате. Наиболее полезен в сочетании сAutoDateLocator. -
DateFormatter: использует строки форматаstrftime.
- классmatplotlib.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
- классmatplotlib.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
-
Максимальное количество делений; определяет интервал между делениями (каждое второе, каждое третье и т. д.). Для более точной настройки это может быть словарь, сопоставляющий отдельные константы частоты 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- axisinfo(unit, axis)[исходный код]
-
Возвращает
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)[исходный код]
-
Основания:
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 года будут выглядеть как «дек», «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)
Автоматически форматирует метки дат. Для создания исходной строки используется формат по умолчанию, после чего удаляются избыточные элементы.
- 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 или список целых чисел, по умолчанию: все дни
-
Метки будут размещены в каждый из дней, указанных в bymonthday. По умолчанию
bymonthday=range(1, 32), то есть каждый день месяца. - intervalцелое число, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечать каждую вторую дату. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если tz является строкой, она передаётся в
dateutil.tz.
- classmatplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[исходный код]
-
Основания:
RRuleLocatorСоздаёт метки для каждого часа.
- Параметры:
-
- byhourint или список целых чисел, по умолчанию: все часы
-
Метки будут размещены в каждый из часов, указанных в byhour. По умолчанию
byhour=range(24), то есть каждый час. - intervalцелое число, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечать каждую вторую дату. -
tzстрока или
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, выбрав значение, более близкое к отображаемым датам. См. Точность дат и эпохи.- Параметры:
-
- intervalцелое число, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечать каждую вторую дату. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если tz является строкой, она передаётся в
dateutil.tz.
- set_axis(axis)[исходный код]
- set_data_interval(vmin, vmax)[исходный код]
-
[Устарело]
Примечания
Устарело начиная с версии 3.5: Вместо этого используйте
Axis.set_data_interval.
- set_view_interval(vmin, vmax)[исходный код]
-
[Устарело]
Примечания
Устарело начиная с версии 3.5: Вместо этого используйте
Axis.set_view_interval.
- tick_values(vmin, vmax)[исходный код]
-
Возвращает значения расположения меток, заданные параметрами 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)[исходный код]
-
Основан на:
RRuleLocatorУстанавливать метки на каждой минуте.
- Параметры:
-
- byminuteint или список int, по умолчанию: все минуты
-
Метки будут размещаться на каждой минуте в byminutes. По умолчанию
byminute=range(60), т.е. на каждой минуте. - intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждая вторая минута. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если строка, tz передаётся в
dateutil.tz.
- классmatplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[исходный код]
-
Основан на:
RRuleLocatorУстанавливать метки на каждой дате месяца, например 1, 3, 12.
- Параметры:
-
- bymonthint или список int, по умолчанию: все месяцы
-
Метки будут размещаться на каждом месяце в bymonth. По умолчанию
range(1, 13), т.е. на каждом месяце. - bymonthdayint, по умолчанию: 1
-
День, на котором должны быть размещены метки.
- intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждая вторая дата. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если строка, tz передаётся в
dateutil.tz.
- классmatplotlib.dates.RRuleLocator(o, tz=None)[исходный код]
-
Основан на:
DateLocator- Параметры:
-
-
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если строка, tz передаётся в
dateutil.tz.
-
tzстрока или
- staticget_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)[исходный код]
-
Основан на:
RRuleLocatorУстанавливать метки на каждой секунде.
- Параметры:
-
- bysecondint или список int, по умолчанию: все секунды
-
Метки будут размещаться на каждой секунде в bysecond. По умолчанию
bysecond = range(60), т.е. на каждой секунде. - intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, отмечается каждая вторая секунда. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если строка, tz передаётся в
dateutil.tz.
- классmatplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None)[исходный код]
-
Основан на:
RRuleLocatorСоздаёт метки на днях недели.
- Параметры:
-
- byweekdayint или список 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.
- классmatplotlib.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 или последовательность чисел с плавающей точкой
-
Количество дней с эпохи. См.
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)[исходный код]
-
Преобразует строку даты в datenum, используя
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-
Список чисел с плавающей точкой, представляющих даты Matplotlib.
- matplotlib.dates.epoch2num(e)[исходный код]
-
[Устарело] Преобразует время UNIX в количество дней с эпохи Matplotlib.
- Параметры:
-
- eсписок чисел с плавающей точкой
-
Время в секундах с 1970-01-01.
- Возвращает:
-
numpy.array-
Время в днях с эпохи Matplotlib (см.
get_epoch()).
Примечания
Устарело начиная с версии 3.5: Используйте
[date2num(datetime.utcfromtimestamp(t)) for t in e]или типы numpy.datetime64 вместо этого.
- matplotlib.dates.get_epoch()[исходный код]
-
Получить эпоху, используемую функцией
dates.- Возвращает:
-
- эпохаstr
-
Строковое представление эпохи (разбирается функцией
numpy.datetime64).
- matplotlib.dates.num2date(x, tz=None)[исходный код]
-
Преобразование дат Matplotlib в объекты
datetime.- Параметры:
-
- xfloat или последовательность чисел с плавающей точкой
-
Число дней (дробная часть представляет часы, минуты, секунды) с момента эпохи. См.
get_epochдля эпохи, которую можно изменить с помощьюrcParams["date.epoch"](по умолчанию:'1970-01-01T00:00:00') илиset_epoch. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона для x. Если строка, tz передаётся в
dateutil.tz.
- Возвращает:
-
-
datetimeили последовательность объектовdatetime -
Даты возвращаются во временной зоне tz.
Если x является последовательностью, будет возвращена последовательность объектов
datetime.
-
Примечания
Предполагается григорианский календарь; это не является общепринятой практикой. Подробности см. в строке документации модуля.
- matplotlib.dates.num2epoch(d)[исходный код]
-
[Устарело] Преобразование дней с момента эпохи Matplotlib в время UNIX.
- Параметры:
-
- dсписок чисел с плавающей точкой
-
Время в днях с момента эпохи Matplotlib (см.
get_epoch()).
- Возвращает:
-
numpy.array-
Время в секундах с момента 1970-01-01.
Примечания
Устарело начиная с версии 3.5: Используйте
num2date(e).timestamp()вместо этого.
- matplotlib.dates.num2timedelta(x)[исходный код]
-
Преобразование количества дней в объект
timedelta.Если x является последовательностью, будет возвращена последовательность объектов
timedelta.- Параметры:
-
- xfloat, последовательность чисел с плавающей точкой
-
Количество дней. Дробная часть представляет часы, минуты, секунды.
- Возвращает:
-
-
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)
-
Основы:
objectТип relativedelta предназначен для применения к существующему datetime и может заменить определённые компоненты этого datetime или представлять временной интервал.
Он основан на превосходной работе М.-А. Лембурга в его расширении 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
- 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)[исходный код]
-
Устанавливает эпоху (начало отсчёта дат) для вычислений datetime.
По умолчанию эпоха
rcParams["dates.epoch"](по умолчанию 1970-01-01T00:00).Если требуется точность до микросекунды, отображаемая дата должна находиться примерно в пределах 70 лет от эпохи. Matplotlib внутренне представляет даты как дни с момента эпохи, поэтому диапазон значений с плавающей точкой должен укладываться в множитель 2^52.
set_epochнеобходимо вызвать до преобразования каких-либо дат (то есть примерно во время импорта), иначе будет вызвано исключение RuntimeError.См. также Точность дат и эпохи.
- Параметры:
-
- epochstr
-
действительная дата UTC, разбираемая с помощью
numpy.datetime64(не указывайте часовой пояс).
© 2012–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.6.0/api/dates_api.html