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's datetime.datetime, Matplotlib использует григорианский календарь для всех преобразований между датами и числами с плавающей точкой. Эта практика не является универсальной, и различия в календарях могут привести к путанице между тем, что Python и Matplotlib возвращают в качестве количества дней с 0001-01-01, и тем, что дают другие программы и базы данных. Например, US Naval Observatory использует календарь, который переключается с юлианского на григорианский в октябре 1582 года. Следовательно, используя их калькулятор, количество дней между 0001-01-01 и 2006-04-01 равно 732403, в то время как используя григорианский календарь через модуль datetime, мы получаем:
In [1]: date(2006, 4, 1).toordinal() - date(1, 1, 1).toordinal() Out[1]: 732401
Все преобразователи, локаторы и форматировщики дат Matplotlib учитывают часовой пояс. Если явный часовой пояс не указан, предполагается rcParams["timezone"] (по умолчанию: 'UTC' ), предоставленный как строка. Если вы хотите использовать другой часовой пояс, передайте ключевой аргумент 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: локализация дней недели, например, ПОН, ВТО. -
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)[исходный код]
-
Базовые классы:
FormatterФорматировщик
Formatter, который пытается определить наилучший формат для использования. Наиболее полезен в сочетании с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 -
Локатор, используемый этой осью.
-
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если задана строка, tz передаётся в
dateutil.tz. - defaultfmtстрока
-
Формат по умолчанию, используемый, если ни одно из значений в
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для установки пределов представления и расположения делений.- Атрибуты:
-
- intervaldсловарь
-
Соответствие частот делений допустимым множителям для этих делений. По умолчанию используется
self.intervald = { YEARLY : [1, 2, 4, 5, 10, 20, 40, 50, 100, 200, 400, 500, 1000, 2000, 4000, 5000, 10000], MONTHLY : [1, 2, 3, 4, 6], DAILY : [1, 2, 3, 7, 14, 21], HOURLY : [1, 2, 3, 4, 6, 12], MINUTELY: [1, 5, 10, 15, 30], SECONDLY: [1, 5, 10, 15, 30], MICROSECONDLY: [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000], }где ключи определены в
dateutil.rrule.Интервал задаёт множители, подходящие для частоты делений. Например, для дневных делений разумно использовать интервал в 7 дней, а для минут и секунд подходят интервалы 15 или 30.
При настройке следует изменять только значения существующих ключей. Не следует добавлять или удалять записи.
Пример принудительной установки делений через каждые 3 часа:
locator = AutoDateLocator() locator.intervald[HOURLY] = [3] # only show every 3 hours
- Параметры:
-
-
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](значение по умолчанию:'UTC') -
Часовой пояс делений. Если задана строка, tz передаётся в
dateutil.tz. - minticksint
-
Минимальное желаемое количество делений; определяет, будут ли деления годовыми, месячными и т. д.
- maxticksint
-
Максимальное желаемое количество делений; определяет интервал между делениями (через одно, через каждые 3 и т. д.). Для более точного управления можно задать словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т. д.) с собственным максимальным количеством делений. Это позволяет поддерживать подходящее количество делений для формата, выбранного в
AutoDateFormatter. Для любой частоты, не указанной в этом словаре, используется значение по умолчанию. - interval_multiplesbool, по умолчанию: True
-
Следует ли выбирать деления кратными интервалу, размещая их в более удобных местах. Например, при часовом шаге в 6 часов деления будут установлены на 0, 6, 12 и 18 часов.
-
tzстрока или
- 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]
- класс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)[исходный код]
-
Базовые классы:
FormatterФорматировщик
Formatter, который пытается определить наилучший формат для даты, сделав его максимально компактным, но при этом полным. Это наиболее полезно при использовании сAutoDateLocator:>>> locator = AutoDateLocator() >>> formatter = ConciseDateFormatter(locator)
- Параметры:
-
-
locator
ticker.Locator -
Локатор, используемый данным осевым объектом.
-
tzстрока или
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,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.
- классmatplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[исходный код]
-
Базовые классы:
RRuleLocatorСоздаёт метки на каждой дате месяца. Например, 1, 15, 30.
- Параметры:
-
- bymonthdayint или список int, по умолчанию: все дни
-
Метки будут размещены на каждом дне в bymonthday. По умолчанию
bymonthday=range(1, 32), т. е. каждый день месяца. - intervalint, по умолчанию: 1
-
Интервал между каждой итерацией. Например, если
interval=2, отмечать каждую вторую дату. -
tzстрока или
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, отмечать каждую вторую дату. -
tzстрока или
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 или список int, по умолчанию: все минуты
-
Метки будут размещены на каждой минуте в 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 или список 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строка или
- статическийget_unit_generic(freq)[исходный код]
- tick_values(vmin, vmax)[исходный код]
-
Возвращает значения размещенных меток, заданные vmin и vmax.
Примечание
Чтобы получить положения меток с автоматически заданными значениями vmin и vmax для сопутствующего
axisпросто вызовите экземпляр Locator:>>> 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Создавать отметки на определённый день каждого года, который является кратным основанию.
Примеры:
# 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.- Параметры:
-
- 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.- Параметры:
-
- xчисло с плавающей точкой или последовательность чисел с плавающей точкой
-
Количество дней (дробная часть представляет часы, минуты, секунды) с момента эпохи. См.
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, последовательность чисел с плавающей точкой
-
Количество дней. Дробная часть представляет часы, минуты, секунды.
- Возвращает:
-
-
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 или представляет интервал времени.
Он основан на спецификации отличной работы, проведённой M.-A. Lemburg в его расширении mx.DateTime. Однако обратите внимание, что этот тип НЕ реализует тот же алгоритм, что и его работа. Не ожидайте, что он будет вести себя как аналог mx.DateTime.
Существует два способа создания экземпляра relativedelta. Первый — передача ему двух классов date/datetime:
relativedelta(datetime1, datetime2)
Второй — передача любого количества следующих ключевых аргументов:
relativedelta(arg1=x,arg2=y,arg3=z...) year, month, day, hour, minute, second, microsecond: Absolute information (argument is singular); adding or subtracting a relativedelta with absolute information does not perform an arithmetic operation, but rather REPLACES the corresponding value in the original datetime with the value(s) in relativedelta. years, months, weeks, days, hours, minutes, seconds, microseconds: Relative information, may be negative (argument is plural); adding or subtracting a relativedelta with relative information performs the corresponding arithmetic operation on the original datetime value with the information in the relativedelta. weekday: One of the weekday instances (MO, TU, etc) available in the relativedelta module. These instances may receive a parameter N, specifying the Nth weekday, which could be positive or negative (like MO(+1) or MO(-2)). Not specifying it is the same as specifying +1. You can also use an integer, where 0=MO. This argument is always relative e.g. if the calculated date is already Monday, using MO(1) or MO(-1) won't change the day. To effectively make it absolute, use it in combination with the day argument (e.g. day=1, MO(1) for first Monday of the month). leapdays: Will add given days to the date found, if year is a leap year, and the date found is post 28 of february. yearday, nlyearday: Set the yearday or the non-leap year day (jump leap days). These are converted to day/month/leapdays information.Существуют относительные и абсолютные формы ключевых аргументов. Множественное число — относительное, а единственное число — абсолютное. Для каждого аргумента в порядке ниже, сначала применяется абсолютная форма (устанавливая каждый атрибут в это значение), а затем относительная форма (путем добавления значения к атрибуту).
Порядок атрибутов, учитываемых при добавлении этой relativedelta к datetime, таков:
- Год
- Месяц
- День
- Часы
- Минуты
- Секунды
- Микросекунды
Наконец, weekday применяется, используя правило, описанное выше.
Например
>>> from datetime import datetime >>> from dateutil.relativedelta import relativedelta, MO >>> dt = datetime(2018, 4, 9, 13, 37, 0) >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) >>> dt + delta datetime.datetime(2018, 4, 2, 14, 37)
Сначала день устанавливается в 1 (первое число месяца), затем добавляются 25 часов, чтобы получить 2-е число и 14-е часа, и, наконец, применяется weekday, но так как 2-е число уже понедельник, никакого эффекта нет.
- normalized()
-
Возвращает версию этого объекта, представленную только целочисленными значениями относительных атрибутов.
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
- Возвращает:
-
Возвращает объект
dateutil.relativedelta.relativedelta.
- свойствоweeks
- 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["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.8.4/api/dates_api.html