Spec-Zone.ru › Matplotlib

matplotlib.dates

Диаграмма наследования 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

Установка эпохи (начала отсчета дат) для расчетов datetime.

get_epoch

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

Примечание

Как и в 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's dateutil.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)[source]

Bases: 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

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

Parameters:
locatorticker.Locator

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

tzstr или tzinfo, по умолчанию: rcParams["timezone"] (по умолчанию: 'UTC')

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

defaultfmtstr

Формат по умолчанию, если ни одно из значений в 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)[source]

Bases: 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

Максимальное количество делений; управляет интервалом между делениями (каждые 2, каждые 3 и т.д.). Для тонкого управления это может быть словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т.д.) с их собственным максимальным количеством делений. Это может быть использовано для поддержания адекватного количества делений для выбранного формата в AutoDateFormatter. Любая частота, не указанная в этом словаре, получает значение по умолчанию.

interval_multiplesbool, по умолчанию: True

Определяет, должны ли деления выбираться кратными интервалу, фиксируя их в «более удобных» местах. Например, при ежечасовом делении с интервалом в 6 часов это заставит деления быть в 0, 6, 12, 18 часах.

get_locator(dmin, dmax)[source]

Выбор лучшего локатора на основе расстояния.

nonsingular(vmin, vmax)[source]

При заданном предполагаемом верхнем и нижнем диапазоне, диапазон корректируется, если он слишком близок к сингулярному (т.е. диапазон ~0).

tick_values(vmin, vmax)[source]

Возвращает значения размеченных делений, учитывая vmin и vmax.

Примечание

Для получения местоположений делений с автоматически определёнными значениями vmin и vmax для соответствующего axis просто вызовите экземпляр локатора:

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
classmatplotlib.dates.ConciseDateConverter(formats=None, zero_formats=None, offset_formats=None, show_offset=True, *, interval_multiples=True)[source]

Bases: DateConverter

axisinfo(unit, axis)[source]

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

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

classmatplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True, *, usetex=None)[source]

Bases: Formatter

A Formatter which attempts to figure out the best format to use for the date, and to make it as compact as possible, but still be complete. This is most useful when used with the AutoDateLocator:

>>> locator = AutoDateLocator()
>>> formatter = ConciseDateFormatter(locator)
Parameters:
locatorticker.Locator

Locator that this axis is using.

tzstr or tzinfo, default: rcParams["timezone"] (default: 'UTC')

Ticks timezone, passed to dates.num2date.

formatslist of 6 strings, optional

Format strings for 6 levels of tick labelling: mostly years, months, days, hours, minutes, and seconds. Strings use the same format codes as strftime. Default is ['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']

zero_formatslist of 6 strings, optional

Format strings for tick labels that are "zeros" for a given tick level. For instance, if most ticks are months, ticks around 1 Jan 2005 will be labeled "Dec", "2005", "Feb". The default is ['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M']

offset_formatslist of 6 strings, optional

Format strings for the 6 levels that is applied to the "offset" string found on the right side of an x-axis, or top of a y-axis. Combined with the tick labels this should completely specify the date. The default is:

['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
show_offsetbool, default: True

Whether to show the offset or not.

usetexbool, default: rcParams["text.usetex"] (default: False)

To enable/disable the use of TeX's math mode for rendering the results of the formatter.

Examples

See Форматирование меток дат с помощью ConciseDateFormatter

(Source code, 2x.png, png)

Autoformat the date labels. The default format is used to form an initial string, and then redundant elements are removed.

format_data_short(value)[source]

Return a short string version of the tick value.

Defaults to the position-independent long value.

format_ticks(values)[source]

Return the tick labels for all the ticks at once.

get_offset()[source]
classmatplotlib.dates.DateConverter(*, interval_multiples=True)[source]

Bases: ConversionInterface

Конвертер для данных datetime.date и datetime.datetime, или для данных дат/времени, представленных так, как они будут преобразованы с помощью date2num.

Тег 'unit' для таких данных — None или экземпляр tzinfo.

axisinfo(unit, axis)[source]

Return the AxisInfo for unit.

unit is a tzinfo instance or None. The axis argument is required but not used.

staticconvert(value, unit, axis)[source]

If value is not already a number or sequence of numbers, convert it with date2num.

The unit and axis arguments are not used.

staticdefault_units(x, axis)[source]

Return the tzinfo instance of x or of its first element, or None

END_OF_DOCUMENT_MARKER
классmatplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[source]

Базы: Formatter

Форматировать метку (в днях с эпохи) с помощью строки формата strftime.

Параметры:
fmtstr

Строка формата strftime

tzstr или tzinfo, по умолчанию: rcParams["timezone"] (по умолчанию: 'UTC')

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

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

Включить/выключить использование математического режима TeX для рендеринга результатов форматировщика.

set_tzinfo(tz)[source]
классmatplotlib.dates.DateLocator(tz=None)[source]

Базы: Locator

Определяет расположения меток при построении графиков дат.

Этот класс наследуется другими локерами и не предназначен для непосредственного использования.

Параметры:
tzstr или tzinfo, по умолчанию: rcParams["timezone"] (по умолчанию: 'UTC')

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

datalim_to_dt()[source]

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

hms0d={'byhour': 0, 'byminute': 0, 'bysecond': 0}
nonsingular(vmin, vmax)[source]

Учитывая предлагаемый верхний и нижний пределы, скорректируйте диапазон, если он слишком близок к сингулярному (т.е. диапазон ~0).

set_tzinfo(tz)[source]

Установить информацию о временной зоне.

Параметры:
tzstr или tzinfo, по умолчанию: rcParams["timezone"] (по умолчанию: 'UTC')

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

viewlim_to_dt()[source]

Преобразовать интервал просмотра в объекты datetime.

классmatplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[source]

Базы: 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)[source]

Базы: RRuleLocator

Создавать метки на каждом часе.

Параметры:
byhourint или список int, по умолчанию: все часы

Метки будут размещены на каждый час в byhour. По умолчанию byhour=range(24), т.е. каждый час.

intervalint, по умолчанию: 1

Интервал между каждым итерацией. Например, если interval=2, отмечать каждую вторую запись.

tzstr или tzinfo, по умолчанию: rcParams["timezone"] (по умолчанию: 'UTC')

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

classmatplotlib.dates.MicrosecondLocator(interval=1, tz=None)[source]

Bases: 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)[source]
tick_values(vmin, vmax)[source]

Возвращает значения размеченных меток, заданных vmin и vmax.

Примечание

Чтобы получить расположение меток с автоматически определенными значениями vmin и vmax для связанного axis , просто вызовите экземпляр локетора:

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
classmatplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[source]

Bases: RRuleLocator

Создаёт метки на каждом значении минут.

Параметры:
byminuteint или список целых чисел, по умолчанию: все минуты

Метки будут размещаться на каждой минуте в byminute. По умолчанию byminute=range(60), т.е., каждая минута.

intervalint, по умолчанию: 1

Интервал между каждым итерационным значением. Например, если interval=2, отмечать каждую вторую итерацию.

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

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

classmatplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[source]

Bases: RRuleLocator

Создаёт метки на каждое значение месяца, например, 1, 3, 12.

Параметры:
bymonthint или список целых чисел, по умолчанию: все месяцы

Метки будут размещаться на каждом месяце в bymonth. По умолчанию range(1, 13), т.е. каждый месяц.

bymonthdayint, по умолчанию: 1

День, на котором размещать метки.

intervalint, по умолчанию: 1

Интервал между каждым итерационным значением. Например, если interval=2, отмечать каждую вторую итерацию.

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

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

classmatplotlib.dates.RRuleLocator(o, tz=None)[source]

Bases: DateLocator

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

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

staticget_unit_generic(freq)[source]
tick_values(vmin, vmax)[source]

Возвращает значения размеченных меток, заданных vmin и vmax.

Примечание

Чтобы получить расположение меток с автоматически определенными значениями vmin и vmax для связанного axis , просто вызовите экземпляр локетора:

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
END_OF_DOCUMENT_MARKER
классmatplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[source]

Базы: RRuleLocator

Создаёт метки на каждом втором.

Параметры:
bysecondint или список целых чисел, по умолчанию: все секунды

Метки будут размещаться на каждой секунде в bysecond. Значение по умолчанию — bysecond = range(60), то есть на каждой секунде.

intervalцелое число, по умолчанию: 1

Интервал между каждой итерацией. Например, если interval=2, отмечать каждую вторую секунду.

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

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

классmatplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None)[source]

Базы: RRuleLocator

Создаёт метки на каждое выходное число.

Параметры:
byweekdayint или список целых чисел, по умолчанию: все дни

Метки будут размещаться на каждый день недели в byweekday. По умолчанию - каждый день.

Элементы byweekday должны быть одним из MO, TU, WE, TH, FR, SA, SU, константами из dateutil.rrule, которые были импортированы в пространство имен matplotlib.dates.

intervalцелое число, по умолчанию: 1

Интервал между каждой итерацией. Например, если interval=2, отмечать каждую вторую дату.

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

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

классmatplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[source]

Базы: RRuleLocator

Создаёт метки на заданный день каждого года, который является кратным base.

Примеры:

# Tick every year on Jan 1st
locator = YearLocator()

# Tick every 5 years on July 4th
locator = YearLocator(5, month=7, day=4)
Параметры:
baseцелое число, по умолчанию: 1

Отмечать метки каждые base лет.

monthцелое число, по умолчанию: 1

Месяц, на который размещаются метки, начиная с 1. По умолчанию — январь.

dayцелое число, по умолчанию: 1

День, на который размещаются метки.

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

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

matplotlib.dates.date2num(d)[source]

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

Параметры:
ddatetime.datetime или numpy.datetime64 или последовательности этих объектов
Возвращает:
число с плавающей точкой или последовательность чисел с плавающей точкой

Количество дней с эпохи. Смотрите 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)[source]

Преобразует строку даты в datenum с помощью dateutil.parser.parse.

Параметры:
dстрока или последовательность строк

Даты для преобразования.

defaultdatetime.datetime, необязательно

Дата по умолчанию для использования в случае отсутствия данных в d.

END_OF_DOCUMENT_MARKER
matplotlib.dates.drange(dstart, dend, delta)[source]

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

Даты начинаются с dstart и доходят до, но не включают, dend. Они распределены с шагом delta.

Параметры:
dstart, denddatetime

Пределы дат.

deltadatetime.timedelta

Шаг между датами.

Возвращаемое значение:
numpy.array

Список чисел, представляющих даты Matplotlib.

matplotlib.dates.get_epoch()[source]

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

Возвращаемое значение:
epochstr

Строка, представляющая эпоху (разбирается функцией numpy.datetime64).

matplotlib.dates.num2date(x, tz=None)[source]

Преобразовать числовые даты 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)[source]

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

Если x — последовательность, будет возвращена последовательность объектов timedelta.

Параметры:
xfloat, последовательность чисел

Количество дней. Дробная часть представляет часы, минуты, секунды.

Возвращаемое значение:
datetime.timedelta или список[datetime.timedelta]
END_OF_DOCUMENT_MARKER
класс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
классmatplotlib.dates.rrulewrapper(freq, tzinfo=None, **kwargs)[source]

Базы: object

Простой обёртка вокруг dateutil.rrule, позволяющий гибко задавать метки дат.

Параметры:
freq{YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY}

Частота меток. Эти константы определены в dateutil.rrule, но они также доступны из matplotlib.dates.

tzinfodatetime.tzinfo, необязательно

Информация о часовом поясе. По умолчанию равно None.

**kwargs

Дополнительные ключевые аргументы передаются в dateutil.rrule.

set(**kwargs)[source]

Установить параметры для существующей обёртки.

matplotlib.dates.set_epoch(epoch)[source]

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

По умолчанию эпоха — 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/stable/api/dates_api.html

Spec-Zone.ru

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