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. | |
Установка эпохи (начала отсчета дат) для расчетов datetime. | |
Получение эпохи, используемой модулем |
Примечание
Как и в 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'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:
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:
-
-
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для установки пределов отображения и расположения делений.- Атрибуты:
-
- 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 часах.
-
tzstr или
- 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
- classmatplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True, *, usetex=None)[source]
-
Bases:
FormatterA
Formatterwhich 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 theAutoDateLocator:>>> locator = AutoDateLocator() >>> formatter = ConciseDateFormatter(locator)
- Parameters:
-
-
locator
ticker.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.
-
locator
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
AxisInfofor unit.unit is a
tzinfoinstance 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
tzinfoinstance of x or of its first element, or None
- класс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.
-
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.
- класс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.
-
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]
- класс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.
- Параметры:
-
-
d
datetime.datetimeилиnumpy.datetime64или последовательности этих объектов
-
d
- Возвращает:
-
- число с плавающей точкой или последовательность чисел с плавающей точкой
-
Количество дней с эпохи. Смотрите
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, dend
datetime -
Пределы дат.
-
delta
datetime.timedelta -
Шаг между датами.
-
dstart, dend
- Возвращаемое значение:
-
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]
-
- классmatplotlib.dates.relativedelta(dt1=None, dt2=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0, year=None, month=None, day=None, weekday=None, yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None)
-
Базы:
objectТип relativedelta предназначен для применения к существующим объектам datetime и может заменять определённые компоненты этого объекта datetime или представляет собой интервал времени.
Он основан на спецификации отличной работы M.-A. Lemburg в его расширении mx.DateTime. Однако обратите внимание, что этот тип НЕ реализует тот же алгоритм, что и его работа. Не ожидайте, что он будет вести себя как аналог mx.DateTime.
Существует два способа создания экземпляра relativedelta. Первый — передать ему два объекта date/datetime:
relativedelta(datetime1, datetime2)
Второй — передать любое количество следующих ключевых аргументов:
relativedelta(arg1=x,arg2=y,arg3=z...) year, month, day, hour, minute, second, microsecond: Absolute information (argument is singular); adding or subtracting a relativedelta with absolute information does not perform an arithmetic operation, but rather REPLACES the corresponding value in the original datetime with the value(s) in relativedelta. years, months, weeks, days, hours, minutes, seconds, microseconds: Relative information, may be negative (argument is plural); adding or subtracting a relativedelta with relative information performs the corresponding arithmetic operation on the original datetime value with the information in the relativedelta. weekday: One of the weekday instances (MO, TU, etc) available in the relativedelta module. These instances may receive a parameter N, specifying the Nth weekday, which could be positive or negative (like MO(+1) or MO(-2)). Not specifying it is the same as specifying +1. You can also use an integer, where 0=MO. This argument is always relative e.g. if the calculated date is already Monday, using MO(1) or MO(-1) won't change the day. To effectively make it absolute, use it in combination with the day argument (e.g. day=1, MO(1) for first Monday of the month). leapdays: Will add given days to the date found, if year is a leap year, and the date found is post 28 of february. yearday, nlyearday: Set the yearday or the non-leap year day (jump leap days). These are converted to day/month/leapdays information.Существуют относительные и абсолютные формы ключевых аргументов. Множественное число относится к относительному, а единственное — к абсолютному. Для каждого аргумента в нижеприведённом порядке сначала применяется абсолютная форма (путем установки каждого атрибута в это значение), а затем относительная форма (путем добавления значения к атрибуту).
Порядок атрибутов, рассматриваемых при добавлении этого relativedelta к объекту datetime, следующий:
- Год
- Месяц
- День
- Часы
- Минуты
- Секунды
- Микросекунды
Наконец, применяется weekday, используя описанное выше правило.
Например
>>> from datetime import datetime >>> from dateutil.relativedelta import relativedelta, MO >>> dt = datetime(2018, 4, 9, 13, 37, 0) >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) >>> dt + delta datetime.datetime(2018, 4, 2, 14, 37)
Сначала день устанавливается в 1 (первое число месяца), затем добавляются 25 часов, чтобы получить 2-й день и 14-й час, наконец, применяется weekday, но поскольку 2-е число уже понедельник, никакого эффекта нет.
- normalized()
-
Возвращает версию этого объекта, представленную только целыми значениями для относительных атрибутов.
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
- Возвращает:
-
Возвращает объект
dateutil.relativedelta.relativedelta.
- свойствоweeks
- классmatplotlib.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]
-
Установить эпоху (начало отсчёта для дат) для вычислений с датами.
По умолчанию эпоха —
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