matplotlib.dates
Модуль matplotlib предоставляет расширенные возможности для построения графиков с датами, опираясь на возможности модуля python datetime и дополнительного модуля dateutil.
По умолчанию Matplotlib использует механизм единиц, описанный в units, для преобразования объектов datetime.datetime и numpy.datetime64 при их отображении на оси x или y. Пользователю не нужно ничего делать для форматирования дат, но часто даты требуют строгого форматирования, поэтому этот модуль предоставляет множество локеров и форматировщиков осей. Пример использования с numpy.datetime64:
import numpy as np
times = np.arange(np.datetime64('2001-01-02'),
np.datetime64('2002-02-03'), np.timedelta64(75, 'm'))
y = np.random.randn(len(times))
fig, ax = plt.subplots()
ax.plot(times, y)
См. также
Формат дат в Matplotlib
Matplotlib представляет даты с помощью чисел с плавающей запятой, указывающих количество дней, прошедших с эпохи по умолчанию 1970-01-01 UTC; например, 1970-01-01 06:00 соответствует числу с плавающей запятой 0.25. Форматировщики и локеры требуют использование объектов datetime.datetime, поэтому можно представлять только даты с 0001 по 9999 год. Достижение микросекундной точности возможно в течение (приблизительно) 70 лет по обе стороны от эпохи, и 20 микросекунд в остальных допустимых диапазонах дат (с 0001 по 9999 год). Эпоху можно изменить во время импорта с помощью dates.set_epoch или rcParams["dates.epoch"] на другие даты, если необходимо; см. Точность дат и эпохи для обсуждения.
Примечание
До Matplotlib 3.3 эпоха была 0000-12-31, что привело к потере современной микросекундной точности и сделало значение по умолчанию для предельного значения оси 0 недопустимой датой. В 3.3 эпоха была изменена, как указано выше. Для преобразования старых ординальных чисел с плавающей запятой в новую эпоху пользователи могут сделать:
new_ordinal = old_ordinal + mdates.date2num(np.datetime64('0000-12-31'))
Существует ряд вспомогательных функций для преобразования между объектами datetime и датами Matplotlib:
Преобразуйте строку даты в datenum, используя | |
Преобразуйте объекты datetime в даты Matplotlib. | |
Преобразуйте даты Matplotlib в объекты | |
Преобразуйте количество дней в объект | |
Возвращает последовательность равномерно распределенных дат Matplotlib. | |
Установить эпоху (начало отсчета дат) для расчетов с датами. | |
Получить эпоху, используемую модулем |
Примечание
Как и в Python datetime.datetime, Matplotlib использует григорианский календарь для всех преобразований между датами и числами с плавающей запятой. Эта практика не является универсальной, и различия в календарях могут привести к путанице между тем, что Python и Matplotlib выдают как количество дней с 0001-01-01, и что дают другие программы и базы данных. Например, Морской обсерватории США использует календарь, который переходит от юлианского к григорианскому в октябре 1582 года. Поэтому, используя их калькулятор, количество дней между 0001-01-01 и 2006-04-01 составляет 732403, тогда как с помощью григорианского календаря через модуль datetime мы получаем:
In [1]: date(2006, 4, 1).toordinal() - date(1, 1, 1).toordinal() Out[1]: 732401
Все преобразователи, локеры и форматировщики дат Matplotlib учитывают часовой пояс. Если явный часовой пояс не указан, rcParams["timezone"] (по умолчанию: 'UTC') используется, предоставляемый в виде строки. Если вы хотите использовать другой часовой пояс, передайте параметр tz в ключевом слове num2date для создаваемых локеров или форматировщиков дат. Это может быть либо экземпляр datetime.tzinfo, либо строка с именем часового пояса, которая может быть обработана gettz.
В этом модуле предоставляется широкий спектр специфических и универсальных локеров и форматировщиков дат. См. matplotlib.ticker для общей информации о локерах и форматировщиках меток. Они описаны ниже.
Модуль dateutil предоставляет дополнительный код для обработки меток дат, упрощая размещение меток на датах любого типа. Смотрите примеры ниже.
Маркеры дат
Большинство маркеров дат могут находить одно или несколько значений. Например:
# import constants for the days of the week from matplotlib.dates import MO, TU, WE, TH, FR, SA, SU # tick on mondays every week loc = WeekdayLocator(byweekday=MO, tz=tz) # tick on mondays and saturdays loc = WeekdayLocator(byweekday=(MO, SA))
Кроме того, большинство конструкторов принимают аргумент интервала:
# tick on mondays every second week loc = WeekdayLocator(byweekday=MO, interval=2)
Маркер rrule позволяет полностью обобщить маркировку дат:
# tick every 5th easter rule = rrulewrapper(YEARLY, byeaster=1, interval=5) loc = RRuleLocator(rule)
Доступные маркеры дат:
-
MicrosecondLocator: Определять микросекунды. -
SecondLocator: Определять секунды. -
MinuteLocator: Определять минуты. -
HourLocator: Определять часы. -
DayLocator: Определять указанные дни месяца. -
WeekdayLocator: Определять дни недели, например, ПОН, ВТ. -
MonthLocator: Определять месяцы, например, 7 для июля. -
YearLocator: Определять годы, которые являются кратными основанию. -
RRuleLocator: Определять с помощьюrrulewrapper.rrulewrapper— это простой оболочкой вокруг dateutil'sdateutil.rrule, которые позволяют задавать почти любые метки дат. См. пример rrule. -
AutoDateLocator: При автоматическом масштабировании этот класс выбирает лучшийDateLocator(например,RRuleLocator) для установки пределов представления и позиций меток. Если вызван сinterval_multiples=Trueон выровняет метки с разумными кратными интервалам меток. Например, если интервал составляет 4 часа, он выберет часы 0, 4, 8 и т. д. в качестве меток. Это поведение не гарантируется по умолчанию.
Форматирование дат
Доступные форматы дат:
-
AutoDateFormatter: пытается определить наилучший формат. Это наиболее полезно при использовании сAutoDateLocator. -
ConciseDateFormatter: также пытается определить наилучший формат и сделать его максимально компактным, сохраняя при этом полную информацию о дате. Это наиболее полезно при использовании сAutoDateLocator. -
DateFormatter: использовать строки форматаstrftime.
- classmatplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d', *, usetex=None)[source]
-
Bases:
FormatterA
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:
-
-
locator
ticker.Locator -
Локатор, используемый этой осью.
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона тиков. Если строка, tz передается в
dateutil.tz. - defaultfmtstr
-
Формат по умолчанию, используемый, если ни одно из значений в
self.scaledне больше, чем единица, возвращаемаяlocator._get_unit(). -
usetexbool, по умолчанию:
rcParams["text.usetex"](по умолчанию:False) -
Включить/отключить использование математического режима TeX для рендеринга результатов форматировщика. Если какие-либо записи в
self.scaledзаданы как функции, то за включение или отключение математического режима TeX отвечает сама настраиваемая функция.
-
locator
- classmatplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=True)[source]
-
Bases:
DateLocatorПри автоматическом масштабировании этот класс выбирает лучший
DateLocatorдля установки пределов представления и расположения тиков.- Attributes:
-
- 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
- Parameters:
-
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона тиков. Если строка, tz передается в
dateutil.tz. - minticksint
-
Минимальное количество тиков; управляет тем, отображаются ли тики ежегодно, ежемесячно и т.д.
- maxticksint
-
Максимальное количество тиков; управляет интервалом между тиками (каждый второй, каждый третий и т.д.). Для тонкой настройки это может быть словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т.д.) с их собственным максимальным количеством тиков. Это можно использовать для поддержания количества тиков, соответствующих формату, выбранному в
AutoDateFormatter. Любая частота, не указанная в этом словаре, получает значение по умолчанию. - interval_multiplesbool, по умолчанию: True
-
Определяет, должны ли тики выбираться как кратные интервалу, фиксируя их в «более красивых» местах. Например, это заставит тики отображаться в 0, 6, 12, 18 часов при часовом тике с интервалом в 6 часов.
-
tzstr или
- get_locator(dmin, dmax)[source]
-
Выбор наилучшего локатора на основе расстояния.
- nonsingular(vmin, vmax)[source]
-
При заданных предлагаемых верхнем и нижнем значениях корректировка диапазона, если он слишком близок к сингулярному (т. е. диапазон ~0).
- tick_values(vmin, vmax)[source]
-
Возвращает значения расположенных тиков с заданными vmin и vmax.
Примечание
Чтобы получить местоположения тиков с автоматически определенными значениями vmin и vmax для связанного
axis, просто вызовите экземпляр Locator:>>> 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:
FormatterA
Formatter, который пытается определить наилучший формат для даты и сделать его максимально компактным, но при этом полным. Это наиболее полезно при использовании сAutoDateLocator:>>> locator = AutoDateLocator() >>> formatter = ConciseDateFormatter(locator)
- Параметры:
-
-
locator
ticker.Locator -
Локатор, используемый для этого осей.
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток, передаваемая в
dates.num2date. - formatsсписок из 6 строк, необязательно
-
Форматные строки для 6 уровней меток: в основном годы, месяцы, дни, часы, минуты и секунды. Строки используют те же коды формата, что и
strftime. Значение по умолчанию —['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f'] - zero_formatsсписок из 6 строк, необязательно
-
Форматные строки для меток, которые являются «нулями» для данного уровня метки. Например, если большинство меток — месяцы, метки около 1 января 2005 года будут помечены как «дек», «2005», «фев». Значение по умолчанию —
['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M'] - offset_formatsсписок из 6 строк, необязательно
-
Форматные строки для 6 уровней, которые применяются к строке «смещение», найденной справа от оси x или сверху от оси y. В сочетании с метками меток это должно полностью указать дату. Значение по умолчанию:
['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
- show_offsetbool, по умолчанию: True
-
Показывать ли смещение.
-
usetexbool, по умолчанию:
rcParams["text.usetex"](по умолчанию:False) -
Включить/выключить использование математического режима TeX для рендеринга результатов форматировщика.
-
locator
Примеры
См. Форматирование меток даты с помощью ConciseDateFormatter
(Исходный код, 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.
-
tzstr или
- 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.
-
tzstr или
- viewlim_to_dt()[source]
-
Преобразует интервал отображения в объекты datetime.
- classmatplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[source]
-
Bases:
RRuleLocatorСоздаёт метки на каждом дне месяца. Например, 1, 15, 30.
- Параметры:
-
- bymonthdayint или список целых чисел, по умолчанию: все дни
-
Метки будут размещены на каждом дне в bymonthday. По умолчанию
bymonthday=range(1, 32), то есть каждый день месяца. - intervalцелое число, по умолчанию: 1
-
Интервал между каждой итерацией. Например, если
interval=2, отмечать каждую вторую дату. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если строка, tz передаётся в
dateutil.tz.
- classmatplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[source]
-
Bases:
RRuleLocatorСоздаёт метки на каждом часу.
- Параметры:
-
- byhourint или список целых чисел, по умолчанию: все часы
-
Метки будут размещены на каждом часу в byhour. По умолчанию
byhour=range(24), то есть каждый час. - intervalцелое число, по умолчанию: 1
-
Интервал между каждой итерацией. Например, если
interval=2, отмечать каждую вторую дату. -
tzстрока или
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на что-то более близкое к отображаемым датам. См. Точность дат и эпохи.- Параметры:
-
- intervalцелое число, по умолчанию: 1
-
Интервал между каждой итерацией. Например, если
interval=2, отмечать каждую вторую дату. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если строка, tz передаётся в
dateutil.tz.
- set_axis(axis)[source]
- set_data_interval(vmin, vmax)[source]
-
[Устарело]
Примечания
Устарело начиная с версии 3.5: Используйте
Axis.set_data_intervalвместо этого.
- set_view_interval(vmin, vmax)[source]
-
[Устарело]
Примечания
Устарело начиная с версии 3.5: Используйте
Axis.set_view_intervalвместо этого.
- tick_values(vmin, vmax)[source]
-
Возвращает значения расположенных меток, заданные vmin и vmax.
Примечание
Чтобы получить расположения меток со значениями vmin и vmax, определёнными автоматически для соответствующего
axisпросто вызовите экземпляр Locator:>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- classmatplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[source]
-
Bases:
RRuleLocatorУстанавливать метки на каждой минуте.
- Параметры:
-
- byminuteint или список int, по умолчанию: все минуты
-
Метки будут размещаться на каждой минуте в byminutes. По умолчанию
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 или список 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- Параметры:
-
-
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона меток. Если строка, tz передаётся в
dateutil.tz.
-
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]
- classmatplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[source]
-
Bases:
RRuleLocatorУстанавливать метки на каждой секунде.
- Параметры:
-
- 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Создаёт метки на днях недели.
- Параметры:
-
- byweekdayint или список int, по умолчанию: все дни
-
Метки будут размещены на всех днях недели в byweekday. По умолчанию - каждый день.
Элементы byweekday должны быть одним из MO, TU, WE, TH, FR, SA, SU, константы из
dateutil.rrule, которые были импортированы в пространство имёнmatplotlib.dates. - intervalint, по умолчанию: 1
-
Интервал между каждой итерацией. Например, если
interval=2, отмечается каждая вторая встреча. -
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Часовой пояс меток. Если строка, tz передаётся в
dateutil.tz.
- classmatplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[source]
-
Bases:
RRuleLocatorСоздаёт метки на заданный день каждого года, кратного base.
Примеры:
# Tick every year on Jan 1st locator = YearLocator() # Tick every 5 years on July 4th locator = YearLocator(5, month=7, day=4)
- Параметры:
-
- baseint, по умолчанию: 1
-
Отмечать метки каждые base лет.
- monthint, по умолчанию: 1
-
Месяц, на котором разместить метки, начиная с 1. По умолчанию - январь.
- dayint, по умолчанию: 1
-
День, на котором разместить метки.
-
tzstr или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Часовой пояс меток. Если строка, tz передаётся в
dateutil.tz.
- matplotlib.dates.date2num(d)[source]
-
Преобразует объекты datetime в даты Matplotlib.
- Параметры:
-
-
d
datetime.datetimeилиnumpy.datetime64или последовательности этих значений
-
d
- Возвращает:
-
- float или последовательность чисел с плавающей точкой
-
Количество дней с эпохи. См.
get_epochдля получения эпохи, которую можно изменить с помощьюrcParams["date.epoch"](по умолчанию:'1970-01-01T00:00:00') илиset_epoch. Если эпоха "1970-01-01T00:00:00" (по умолчанию), то полдень 1 января 1970 ("1970-01-01T12:00:00") возвращает 0,5.
Примечания
Предполагается григорианский календарь; это не общепринятая практика. Подробности см. в строке документации модуля.
- matplotlib.dates.datestr2num(d, default=None)[source]
-
Преобразует строку даты в datenum, используя
dateutil.parser.parse.- Параметры:
-
- dstr или последовательность str
-
Даты для преобразования.
- defaultdatetime.datetime, необязательно
-
Значение даты по умолчанию для использования, когда в d отсутствуют поля.
- matplotlib.dates.drange(dstart, dend, delta)[source]
-
Возвращает последовательность равномерно распределённых дат Matplotlib.
Даты начинаются с dstart и достигают dend, но не включая его. Они расположены с шагом delta.
- Параметры:
-
-
dstart, dend
datetime -
Пределы дат.
-
delta
datetime.timedelta -
Интервал дат.
-
dstart, dend
- Возвращает:
-
numpy.array-
Список чисел с плавающей точкой, представляющих даты Matplotlib.
- matplotlib.dates.epoch2num(e)[source]
-
[Устарело] Преобразует время UNIX в количество дней с эпохи Matplotlib.
- Параметры:
-
- eсписок чисел с плавающей точкой
-
Время в секундах с 1970-01-01.
- Возвращает:
-
numpy.array-
Время в днях с эпохи Matplotlib (см.
get_epoch()).
Примечания
Устарело начиная с версии 3.5: Используйте
[date2num(datetime.utcfromtimestamp(t)) for t in e]или типы numpy.datetime64 вместо этого.
- matplotlib.dates.get_epoch()[source]
-
Получить эпоху, используемую функцией
dates.- Возвращает:
-
- эпохаstr
-
Строковое представление эпохи (разбирается функцией
numpy.datetime64).
- matplotlib.dates.num2date(x, tz=None)[source]
-
Преобразование дат Matplotlib в объекты
datetime.- Параметры:
-
- xfloat или последовательность чисел с плавающей точкой
-
Число дней (дробная часть представляет часы, минуты, секунды) с момента эпохи. См.
get_epochдля эпохи, которую можно изменить с помощьюrcParams["date.epoch"](по умолчанию:'1970-01-01T00:00:00') илиset_epoch. -
tzстрока или
tzinfo, по умолчанию:rcParams["timezone"](по умолчанию:'UTC') -
Временная зона для x. Если строка, tz передаётся в
dateutil.tz.
- Возвращает:
-
-
datetimeили последовательность объектовdatetime -
Даты возвращаются во временной зоне tz.
Если x является последовательностью, будет возвращена последовательность объектов
datetime.
-
Примечания
Предполагается григорианский календарь; это не является общепринятой практикой. Подробности см. в строке документации модуля.
- matplotlib.dates.num2epoch(d)[source]
-
[Устарело] Преобразование дней с момента эпохи Matplotlib в время UNIX.
- Параметры:
-
- dсписок чисел с плавающей точкой
-
Время в днях с момента эпохи Matplotlib (см.
get_epoch()).
- Возвращает:
-
numpy.array-
Время в секундах с момента 1970-01-01.
Примечания
Устарело начиная с версии 3.5: Используйте
num2date(e).timestamp()вместо этого.
- 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 или представляет интервал времени.
Он основан на спецификации отличной работы М.-А. Лембурга в его mx.DateTime расширении. Однако обратите внимание, что этот тип НЕ реализует тот же алгоритм, что и его работа. Не ожидайте, что он будет вести себя так же, как mx.DateTime.
Существует два способа создания экземпляра relativedelta. Первый - передать ему два класса date/datetime:
relativedelta(datetime1, datetime2)
Второй - передать любое количество следующих ключевых аргументов:
relativedelta(arg1=x,arg2=y,arg3=z...) year, month, day, hour, minute, second, microsecond: Absolute information (argument is singular); adding or subtracting a relativedelta with absolute information does not perform an arithmetic operation, but rather REPLACES the corresponding value in the original datetime with the value(s) in relativedelta. years, months, weeks, days, hours, minutes, seconds, microseconds: Relative information, may be negative (argument is plural); adding or subtracting a relativedelta with relative information performs the corresponding arithmetic operation on the original datetime value with the information in the relativedelta. weekday: One of the weekday instances (MO, TU, etc) available in the relativedelta module. These instances may receive a parameter N, specifying the Nth weekday, which could be positive or negative (like MO(+1) or MO(-2)). Not specifying it is the same as specifying +1. You can also use an integer, where 0=MO. This argument is always relative e.g. if the calculated date is already Monday, using MO(1) or MO(-1) won't change the day. To effectively make it absolute, use it in combination with the day argument (e.g. day=1, MO(1) for first Monday of the month). leapdays: Will add given days to the date found, if year is a leap year, and the date found is post 28 of february. yearday, nlyearday: Set the yearday or the non-leap year day (jump leap days). These are converted to day/month/leapdays information.Существуют относительные и абсолютные формы ключевых аргументов. Множественное число - относительное, а единственное число - абсолютное. Для каждого аргумента в порядке ниже, сначала применяется абсолютная форма (устанавливая каждый атрибут на это значение), а затем относительная форма (путем добавления значения к атрибуту).
Порядок атрибутов, рассматриваемых при добавлении этого relativedelta к datetime:
- Год
- Месяц
- День
- Часы
- Минуты
- Секунды
- Микросекунды
Наконец, weekday применяется, используя описанное выше правило.
Например
>>> from datetime import datetime >>> from dateutil.relativedelta import relativedelta, MO >>> dt = datetime(2018, 4, 9, 13, 37, 0) >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) >>> dt + delta datetime.datetime(2018, 4, 2, 14, 37)
Сначала день устанавливается в 1 (первое число месяца), затем добавляются 25 часов, чтобы перейти ко 2-му дню и 14-му часу, наконец, применяется weekday, но так как 2-е уже понедельник, никакого эффекта нет.
- normalized()
-
Возвращает версию этого объекта, представленного полностью с использованием целых значений для относительных атрибутов.
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
- Возвращает:
-
Возвращает объект
dateutil.relativedelta.relativedelta.
- свойствоweeks
- classmatplotlib.dates.rrulewrapper(freq, tzinfo=None, **kwargs)[source]
-
Основы:
objectПростой оболочка вокруг
dateutil.rrule, позволяющая гибко задавать метки дат.- Параметры:
-
- freq{YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY}
-
Частота меток. Эти константы определены в
dateutil.rrule, но они также доступны изmatplotlib.dates. -
tzinfo
datetime.tzinfo, необязательно -
Информация о часовом поясе. По умолчанию значение None.
- **kwargs
-
Дополнительные ключевые аргументы передаются в
dateutil.rrule.
- set(**kwargs)[source]
-
Устанавливает параметры для существующей оболочки.
- matplotlib.dates.set_epoch(epoch)[source]
-
Устанавливает эпоху (начало для дат) для расчетов datetime.
По умолчанию эпоха
rcParams["dates.epoch"](по умолчанию 1970-01-01T00:00).Если требуется точность до микросекунды, дата, которая отображается, должна находиться примерно в пределах 70 лет от эпохи. Matplotlib внутренне представляет даты как дни с момента эпохи, поэтому диапазон с плавающей точкой должен быть в пределах множителя 2^52.
set_epochнеобходимо вызвать до преобразования каких-либо дат (т.е. около раздела импорта), иначе будет поднята ошибка RuntimeError.См. также Точность даты и эпохи.
- Параметры:
-
- epochstr
-
действительная UTC-дата, разбираемая
numpy.datetime64(не включайте часовой пояс).
© 2012–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.6.0/api/dates_api.html