Spec-Zone.ru › Matplotlib 3.8

matplotlib.dates

Inheritance diagram of 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)

См. также

  • Метки дат на оси
  • Форматирование меток дат с помощью ConciseDateFormatter
  • Демонстрация преобразования дат

Формат даты в 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:

datestr2num

Преобразование строковой даты в datenum с использованием dateutil.parser.parse.

date2num

Преобразование объектов datetime в даты Matplotlib.

num2date

Преобразование дат Matplotlib в объекты datetime.

num2timedelta

Преобразование количества дней в объект timedelta.

drange

Возвращение последовательности равномерно распределённых дат Matplotlib.

set_epoch

Установка эпохи (начала отсчёта для дат) для вычислений с датами.

get_epoch

Получение эпохи, используемой модулем dates.

Примечание

Как и в 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's dateutil.rrule, который позволяет задавать деления по датам практически произвольно. См. пример rrule.
  • AutoDateLocator: при автоматическом масштабировании этот класс выбирает лучший локатор DateLocator (например, RRuleLocator) для установки пределов представления и расположения делений. Если вызван с interval_multiples=True , он будет выравнивать деления по удобным кратным интервалам. Например, если интервал составляет 4 часа, он выберет часы 0, 4, 8 и т. д. в качестве делений. Это поведение не гарантируется по умолчанию.

Форматировщики дат

Доступные форматировщики дат:

  • AutoDateFormatter: пытается определить наилучший формат. Наиболее полезен в сочетании с AutoDateLocator.
  • ConciseDateFormatter: также пытается определить наилучший формат и сделать его максимально компактным, сохраняя при этом всю информацию о дате. Наиболее полезен в сочетании с AutoDateLocator.
  • DateFormatter: использует строки формата strftime.
END_OF_DOCUMENT_MARKER
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

Автоматически форматировать метки дат.

Параметры:
locatorticker.Locator

Локатор, используемый этой осью.

tzстрока или tzinfo, по умолчанию: rcParams["timezone"] (значение по умолчанию: 'UTC')

Часовой пояс делений. Если задана строка, tz передаётся в dateutil.tz.

defaultfmtстрока

Формат по умолчанию, используемый, если ни одно из значений в self.scaled не больше единицы, возвращённой locator._get_unit().

usetexbool, по умолчанию: rcParams["text.usetex"] (значение по умолчанию: False)

Включить или отключить использование математического режима TeX для отображения результатов форматировщика. Если какие-либо записи в self.scaled заданы как функции, включение или отключение математического режима TeX должна обеспечивать сама пользовательская функция.

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 часов.

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

axisinfo(unit, axis)[исходный код]

Возвращает AxisInfo для unit.

unit — экземпляр tzinfo или None. Аргумент axis необходим, но не используется.

класс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)
Параметры:
locatorticker.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 для рендеринга результатов форматировщика.

Примеры

См. Форматирование меток тиков с использованием 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.

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.

viewlim_to_dt()[исходный код]

Преобразует интервал отображения в объекты datetime.

END_OF_DOCUMENT_MARKER ```
класс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.

статический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.

Параметры:
ddatetime.datetime или numpy.datetime64 или последовательности этих типов
Возвращаемое значение:
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, denddatetime

Пределы дат.

deltadatetime.timedelta

Шаг дат.

Возвращаемое значение:
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, таков:

  1. Год
  2. Месяц
  3. День
  4. Часы
  5. Минуты
  6. Секунды
  7. Микросекунды

Наконец, 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.

tzinfodatetime.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API