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'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'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
Formatterwhich attempts to figure out the best format to use. This is most useful when used with theAutoDateLocator.AutoDateFormatterhas a.scaledictionary that maps tick scales (the interval in days between one major tick) to format strings; this dictionary defaults toself.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_functionAutoformat the date labels.
- Parameters:
-
-
locator
ticker.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.scaledare greater than the unit returned bylocator._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.scaledare set as functions, then it is up to the customized function to enable or disable TeX's math mode itself.
-
locator
- classmatplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=True)[source]
-
Bases:
DateLocatorOn autoscale, this class picks the best
DateLocatorto 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.
-
tzstr or
- 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
axissimply 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
- класс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)
- Параметры:
-
-
locator
ticker.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 для рендеринга результатов форматировщика.
-
locator
Примеры
См. Форматирование меток тиков с использованием 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.
-
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, отмечать каждую вторую дату. -
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.
-
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.
- Параметры:
-
-
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.- Параметры:
-
- 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.- Параметры:
-
- 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, таков:
- Год
- Месяц
- День
- Часы
- Минуты
- Секунды
- Микросекунды
Наконец, 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. -
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/3.8.4/api/dates_api.html