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)[source]

Bases: Formatter

A Formatter which attempts to figure out the best format to use. This is most useful when used with the AutoDateLocator.

AutoDateFormatter has a .scale dictionary that maps tick scales (the interval in days between one major tick) to format strings; this dictionary defaults to

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'],
}

The formatter uses the format string corresponding to the lowest key in the dictionary that is greater or equal to the current scale. Dictionary entries can be customized:

locator = AutoDateLocator()
formatter = AutoDateFormatter(locator)
formatter.scaled[1/(24*60)] = '%M:%S' # only show min and sec

Custom callables can also be used instead of format strings. The following example shows how to use a custom format function to strip trailing zeros from decimal seconds and adds the date to the first ticklabel:

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

Autoformat the date labels.

Parameters:
locatorticker.Locator

Locator that this axis is using.

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

Ticks timezone. If a string, tz is passed to dateutil.tz.

defaultfmtstr

The default format to use if none of the values in self.scaled are greater than the unit returned by locator._get_unit().

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

To enable/disable the use of TeX's math mode for rendering the results of the formatter. If any entries in self.scaled are set as functions, then it is up to the customized function to enable or disable TeX's math mode itself.

classmatplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=True)[source]

Bases: DateLocator

On autoscale, this class picks the best DateLocator to set the view limits and the tick locations.

Attributes:
intervalddict

Mapping of tick frequencies to multiples allowed for that ticking. The default is

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],
}

where the keys are defined in dateutil.rrule.

The interval is used to specify multiples that are appropriate for the frequency of ticking. For instance, every 7 days is sensible for daily ticks, but for minutes/seconds, 15 or 30 make sense.

When customizing, you should only modify the values for the existing keys. You should not add or delete entries.

Example for forcing ticks every 3 hours:

locator = AutoDateLocator()
locator.intervald[HOURLY] = [3]  # only show every 3 hours
Parameters:
tzstr or tzinfo, default: rcParams["timezone"] (default: 'UTC')

Ticks timezone. If a string, tz is passed to dateutil.tz.

minticksint

The minimum number of ticks desired; controls whether ticks occur yearly, monthly, etc.

maxticksint

The maximum number of ticks desired; controls the interval between ticks (ticking every other, every 3, etc.). For fine-grained control, this can be a dictionary mapping individual rrule frequency constants (YEARLY, MONTHLY, etc.) to their own maximum number of ticks. This can be used to keep the number of ticks appropriate to the format chosen in AutoDateFormatter. Any frequency not specified in this dictionary is given a default value.

interval_multiplesbool, default: True

Whether ticks should be chosen to be multiple of the interval, locking them to 'nicer' locations. For example, this will force the ticks to be at hours 0, 6, 12, 18 when hourly ticking is done at 6 hour intervals.

get_locator(dmin, dmax)[source]

Pick the best locator based on a distance.

nonsingular(vmin, vmax)[source]

Given the proposed upper and lower extent, adjust the range if it is too close to being singular (i.e. a range of ~0).

tick_values(vmin, vmax)[source]

Return the values of the located ticks given vmin and vmax.

Примечание

To get tick locations with the vmin and vmax values defined automatically for the associated axis simply call the Locator instance:

>>> 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)[source]

Базы: DateConverter

axisinfo(unit, axis)[source]

Возвращает 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)[source]

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

Возвращает короткую строку значения тика.

По умолчанию используется длинное значение, независимое от положения.

format_ticks(values)[source]

Возвращает метки тиков для всех тиков сразу.

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

Bases: ConversionInterface

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

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

axisinfo(unit, axis)[source]

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

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

staticconvert(value, unit, axis)[source]

Если value не является числом или последовательностью чисел, преобразует его с помощью date2num.

Аргументы unit и axis не используются.

staticdefault_units(x, axis)[source]

Возвращает экземпляр tzinfo объекта x или его первого элемента, или None.

classmatplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[source]

Bases: Formatter

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

Параметры:
fmtstr

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

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

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

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

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

set_tzinfo(tz)[source]
classmatplotlib.dates.DateLocator(tz=None)[source]

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

END_OF_DOCUMENT_MARKER ```
класс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, отмечать каждую вторую дату.

tzстрока или 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, отмечать каждую вторую дату.

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

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

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

Базы: 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]
классmatplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[source]

Базы: RRuleLocator

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

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

Метки будут размещены на каждой минуте в 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.

Parameters:
bymonthint или список int, по умолчанию: все месяцы

Метки будут размещены на каждом месяце в 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

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

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

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

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

Примечание

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

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

Bases: RRuleLocator

Устанавливает метки на отметках каждой секунды.

Parameters:
bysecondint или список int, по умолчанию: все секунды

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

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

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

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

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

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

Bases: RRuleLocator

Устанавливает метки на отметках каждого дня недели.

Parameters:
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.

classmatplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[source]

Bases: 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)[source]

Преобразование объектов 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)[source]

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

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

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

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

Дата по умолчанию, используемая при отсутствии полей в d.

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.

Параметры:
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)[source]

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

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

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

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

Возвращает:
datetime.timedelta или список[datetime.timedelta]
classmatplotlib.dates.relativedelta(dt1=None, dt2=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0, year=None, month=None, day=None, weekday=None, yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None)

Базы: object

Тип relativedelta предназначен для применения к существующему объекту datetime и может заменить определённые компоненты этого объекта datetime или представляет интервал времени.

Он основан на спецификации отличной работы, проведённой 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.

propertyweeks
classmatplotlib.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/3.8.4/api/dates_api.html

Spec-Zone.ru

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