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["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 использует григорианский календарь для всех преобразований между датами и числами с плавающей запятой. Эта практика не универсальна, и различия в календарях могут привести к путанице между тем, что возвращают 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'), заданный как строка. Если вы хотите использовать другой часовой пояс, передайте ключевое слово 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'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)[исходный код]
-
Базовые классы:
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просто вызовите экземпляр локатора:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- классmatplotlib.dates.ConciseDateConverter(formats=None, zero_formats=None, offset_formats=None, show_offset=True, *, interval_multiples=True)[исходный код]
-
Базовые классы:
DateConverter
- классmatplotlib.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
(
Source code,png)Автоматическое форматирование меток дат. Формат по умолчанию используется для создания исходной строки, после чего удаляются избыточные элементы.
- format_data_short(value)[исходный код]
-
Возвращает короткую строковую версию значения метки.
По умолчанию используется длинное значение, независимое от позиции.
- format_ticks(values)[исходный код]
-
Возвращает метки тиков для всех тиков сразу.
- get_offset()[исходный код]
- классmatplotlib.dates.DateConverter(*, interval_multiples=True)[исходный код]
-
Базовые классы:
ConversionInterfaceКонвертер для данных
datetime.dateиdatetime.datetimeили для данных даты/времени, представленных в виде, получаемом при преобразовании функциейdate2num.Тег «единица» для таких данных — None или экземпляр
tzinfo.- axisinfo(unit, axis)[исходный код]
-
Возвращает
AxisInfoдля unit.unit — экземпляр
tzinfoили None. Аргумент axis обязателен, но не используется.
- статическийconvert(value, unit, axis)[исходный код]
-
Если value еще не является числом или последовательностью чисел, преобразует его с помощью
date2num.Аргументы unit и axis не используются.
- статическийdefault_units(x, axis)[исходный код]
-
Возвращает экземпляр
tzinfoобъекта x или его первого элемента, либо None
- классmatplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[исходный код]
-
Базовые классы:
FormatterФорматирование отметки (в днях с эпохи) с помощью строки формата
strftime.- Параметры:
-
- fmtstr
-
Строка формата
strftime -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Часовой пояс отметки. Если задана строка, tz передается в
dateutil.tz. -
usetexbool, по умолчанию:
rcParams["text.usetex"](по умолчанию:False) -
Включить/выключить использование математического режима TeX для отображения результатов форматировщика.
- set_tzinfo(tz)[исходный код]
- классmatplotlib.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.
- классmatplotlib.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.
- классmatplotlib.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.
- классmatplotlib.dates.MicrosecondLocator(interval=1, tz=None)[исходный код]
-
Базовые классы:
DateLocatorСоздает метки через регулярные интервалы в одну или несколько микросекунд.
Примечание
По умолчанию Matplotlib использует представление времени с плавающей точкой в днях с эпохи, поэтому построение данных с микросекундным разрешением времени не работает хорошо для дат, которые находятся далеко (примерно 70 лет) от эпохи (проверьте с помощью
get_epoch).Если вам нужны графики с разрешением меньше микросекунды, настоятельно рекомендуется использовать значения с плавающей точкой для секунд, а не представление времени в формате datetime.
Если вам действительно необходимо использовать datetime.datetime() или аналогичное представление и вам всё ещё нужна точность до микросекунды, измените временную основу с помощью
dates.set_epochна значение, более близкое к датам, которые вы отображаете. См. Точность дат и эпохи.- Параметры:
-
- intervalint, по умолчанию: 1
-
Интервал между итерациями. Например, если
interval=2, помечайте каждую вторую запись. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Часовой пояс меток. Если задана строка, tz передается в
dateutil.tz.
- set_axis(axis)[исходный код]
- tick_values(vmin, vmax)[исходный код]
-
Возвращает значения размеченных меток, заданные vmin и vmax.
Примечание
Чтобы получить позиции меток с автоматически определенными значениями vmin и vmax для соответствующего
axis, просто вызовите экземпляр локатора:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- классmatplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[исходный код]
-
Базовые классы:
RRuleLocatorСоздает метки каждую минуту.
- Параметры:
-
- byminuteint или список целых чисел, по умолчанию: все минуты
-
Метки будут размещаться во все минуты, указанные в byminute. По умолчанию
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 или список целых чисел, по умолчанию: все месяцы
-
Метки будут размещаться на каждом месяце в 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строка или
- статический методget_unit_generic(freq)[исходный код]
- tick_values(vmin, vmax)[исходный код]
-
Возвращает значения размеченных меток, заданные vmin и vmax.
Примечание
Чтобы получить позиции меток с автоматически определенными значениями vmin и vmax для соответствующего
axisпросто вызовите экземпляр локера:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- классmatplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[исходный код]
-
Базируется на
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, помечается каждый второй. -
tzстрока или
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
-
День, в который должны быть размещены метки.
-
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Часовой пояс меток. Если строка, то tz передаётся в
dateutil.tz.
- matplotlib.dates.date2num(d)[исходный код]
-
Преобразует объекты datetime в даты Matplotlib.
- Параметры:
-
-
d
datetime.datetimeилиnumpy.datetime64или последовательности этих объектов
-
d
- Возвращает:
-
- число с плавающей точкой или последовательность чисел с плавающей точкой
-
Количество дней с момента эпохи. См.
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.- Параметры:
-
- dстрока или последовательность строк
-
Даты для преобразования.
- 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.get_epoch()[исходный код]
-
Получить эпоху, используемую в
dates.- Возвращает:
-
- epochstr
-
Строка эпохи (обрабатывается функцией
numpy.datetime64).
- matplotlib.dates.num2date(x, tz=None)[исходный код]
-
Преобразовать даты Matplotlib в объекты
datetime.- Параметры:
-
- xfloat или последовательность чисел
-
Количество дней (дробная часть — часы, минуты, секунды) с момента эпохи. См.
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.- Параметры:
-
- xчисло, последовательность чисел
-
Количество дней. Дробная часть представляет часы, минуты, секунды.
- Возвращает:
-
-
datetime.timedeltaили список[datetime.timedelta]
-
- классmatplotlib.dates.relativedelta(dt1=None, dt2=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0, year=None, month=None, day=None, weekday=None, yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None)
-
Базовые классы:
objectТип relativedelta предназначен для применения к существующему datetime и может заменять определённые компоненты этого datetime или представлять интервал времени.
Он основан на спецификации выдающейся работы М.-А. Лембурга в его расширении 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.7.5/api/dates_api.html