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 年的日期,可以实现微秒精度,对于其余允许范围的日期(公元 0001 年到 9999 年),可以实现 20 微秒精度。纪元可以在导入时通过 dates.set_epoch
或 rcParams["date.epoch"]
(默认值:'1970-01-01T00:00:00'
)更改为其他日期(如果需要);有关讨论,请参阅日期精度和纪元。
注意
在 Matplotlib 3.3 之前,纪元是 0000-12-31,这导致了现代微秒精度的丢失,并且也使得默认的轴限制 0 成为了一个无效的日期时间。在 3.3 版本中,纪元已如上所述进行了更改。要将旧的序数浮点数转换为新纪元,用户可以执行以下操作:
new_ordinal = old_ordinal + mdates.date2num(np.datetime64('0000-12-31'))
有许多辅助函数用于在 datetime
对象和 Matplotlib 日期之间进行转换:
使用 |
|
将 datetime 对象转换为 Matplotlib 日期。 |
|
将 Matplotlib 日期转换为 |
|
将天数转换为 |
|
返回一系列等间距的 Matplotlib 日期。 |
|
设置日期时间计算的纪元(日期原点)。 |
|
获取 |
注意
与 Python 的 datetime.datetime
类似,Matplotlib 在日期和浮点数之间的所有转换中都使用公历。这种做法并非普遍适用,日历差异可能导致 Python 和 Matplotlib 给出的自 0001-01-01 以来的天数与其他软件和数据库给出的结果之间出现令人困惑的差异。例如,美国海军天文台使用一个在 1582 年 10 月从儒略历切换到公历的日历。因此,使用他们的计算器,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'
),以字符串形式提供。如果想使用不同的时区,请将 num2date
的 tz 关键字参数传递给您创建的任何日期刻度定位器或格式化器。这可以是 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
: 定位星期几,例如 MO(周一)、TU(周二)。MonthLocator
: 定位月份,例如 7 表示七月。YearLocator
: 定位基数倍数的年份。RRuleLocator
: 使用rrulewrapper
进行定位。rrulewrapper
是 dateutil 的dateutil.rrule
的一个简单封装,它允许几乎任意的日期刻度设置。请参见 rrule 示例。AutoDateLocator
: 在自动缩放时,此类别选择最佳的DateLocator
(例如RRuleLocator
)来设置视图限制和刻度位置。如果使用interval_multiples=True
调用,它将使刻度与刻度间隔的合理倍数对齐。例如,如果间隔是 4 小时,它将选择 0、4、8 等小时作为刻度。默认情况下不保证此行为。
日期格式化器#
可用的日期格式化器有:
AutoDateFormatter
: 尝试找出最佳的格式。与AutoDateLocator
结合使用时最有用。ConciseDateFormatter
: 也尝试找出最佳格式,并使格式尽可能紧凑,同时仍包含完整的日期信息。与AutoDateLocator
结合使用时最有用。DateFormatter
: 使用strftime
格式字符串。
- class matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d', *, usetex=None)[source]#
基类:
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
自动格式化日期标签。
- 参数:
- locator
ticker.Locator
此坐标轴正在使用的定位器。
- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。- defaultfmt字符串
如果
self.scaled
中的任何值都不大于locator._get_unit()
返回的单位,则使用的默认格式。- usetex布尔值,默认值:
rcParams["text.usetex"]
(默认值:False
) 启用/禁用使用 TeX 的数学模式来渲染格式化器的结果。如果
self.scaled
中的任何条目设置为函数,则由自定义函数自行启用或禁用 TeX 的数学模式。
- locator
- class matplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=True)[source]#
基类:
DateLocator
在自动缩放时,此类选择最佳的
DateLocator
来设置视图限制和刻度位置。- 属性:
- intervald字典
刻度频率到该刻度允许的倍数的映射。默认值是:
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
- 参数:
- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。- minticks整型
所需的最小刻度数;控制刻度是按年、月等出现。
- maxticks整型
所需的最大刻度数;控制刻度之间的间隔(每隔一个、每隔 3 个等)。为了进行精细控制,这可以是一个字典,将单个 rrule 频率常量(YEARLY、MONTHLY 等)映射到它们各自的最大刻度数。这可用于使刻度数与
AutoDateFormatter
中选择的格式保持一致。此字典中未指定的任何频率都将获得默认值。- interval_multiples布尔值,默认值:True
刻度是否应选择为间隔的倍数,从而将其锁定在“更美观”的位置。例如,当以 6 小时间隔进行每小时刻度时,这将强制刻度位于 0、6、12、18 小时。
- tz字符串或
- class matplotlib.dates.ConciseDateConverter(formats=None, zero_formats=None, offset_formats=None, show_offset=True, *, interval_multiples=True)[source]#
- class 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
。- formats6 个字符串的列表,可选
6 个刻度标签级别的格式字符串:主要是年份、月份、日期、小时、分钟和秒。字符串使用与
strftime
相同的格式代码。默认值为['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']
- zero_formats6 个字符串的列表,可选
对于给定刻度级别中为“零”的刻度标签的格式字符串。例如,如果大多数刻度是月份,那么 2005 年 1 月 1 日左右的刻度将被标记为“Dec”、“2005”、“Feb”。默认值为
['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M']
- offset_formats6 个字符串的列表,可选
应用于 x 轴右侧或 y 轴顶部“偏移”字符串的 6 个级别的格式字符串。结合刻度标签,这应该完全指定日期。默认值为:
['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
- show_offset布尔值,默认值:True
是否显示偏移。
- usetex布尔值,默认值:
rcParams["text.usetex"]
(默认值:False
) 启用/禁用使用 TeX 的数学模式来渲染格式化器的结果。
- locator
示例
请参阅 使用 ConciseDateFormatter 格式化日期刻度
自动格式化日期标签。使用默认格式形成初始字符串,然后删除冗余元素。
- class matplotlib.dates.DateConverter(*, interval_multiples=True)[source]#
-
datetime.date
和datetime.datetime
数据的转换器,或者按照date2num
转换后的日期/时间数据。此类数据的“单位”标签为 None 或
tzinfo
实例。
- class matplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[source]#
基类:
Formatter
使用
strftime
格式字符串格式化刻度(自纪元以来的天数)。- 参数:
- fmt字符串
strftime
格式字符串- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。- usetex布尔值,默认值:
rcParams["text.usetex"]
(默认值:False
) 启用/禁用使用 TeX 的数学模式来渲染格式化器的结果。
- class matplotlib.dates.DateLocator(tz=None)[source]#
继承:
Locator
确定绘制日期时的刻度位置。
此类由其他 `Locator` 子类化,不应单独使用。
- 参数:
- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。
- tz字符串或
- hms0d = {'byhour': 0, 'byminute': 0, 'bysecond': 0}#
- set_tzinfo(tz)[source]#
设置时区信息。
- 参数:
- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。
- tz字符串或
- class 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
。
- class 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
。
- class 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
。
- class 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
。
- class matplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[source]#
继承:
RRuleLocator
在每月出现时创建刻度,例如,1、3、12。
- 参数:
- bymonthint 或 int 列表,默认值:所有月份
刻度将放置在 bymonth 中的每个月。默认值为
range(1, 13)
,即每个月。- bymonthdayint,默认值:1
放置刻度的日期。
- intervalint,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。
- class matplotlib.dates.RRuleLocator(o, tz=None)[source]#
基类:
DateLocator
- 参数:
- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。
- tz字符串或
- class matplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[source]#
继承:
RRuleLocator
在每秒出现时创建刻度。
- 参数:
- bysecondint 或 int 列表,默认值:所有秒
刻度将放置在 bysecond 中的每秒。默认值为
bysecond = range(60)
,即每秒。- intervalint,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。
- class matplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None)[source]#
继承:
RRuleLocator
在每个工作日出现时创建刻度。
- 参数:
- 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
。
- class matplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[source]#
继承:
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
放置刻度的日期。
- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果为字符串,则 tz 会传递给
dateutil.tz
。
- matplotlib.dates.date2num(d)[source]#
将 datetime 对象转换为 Matplotlib 日期。
- 参数:
- d
datetime.datetime
或numpy.datetime64
或它们的序列
- d
- 返回:
- float 或 float 序列
自纪元以来的天数。有关纪元,请参阅
get_epoch
,纪元可以通过rcParams["date.epoch"]
(默认值:'1970-01-01T00:00:00'
)或set_epoch
更改。如果纪元是“1970-01-01T00:00:00”(默认),则 1970 年 1 月 1 日中午(“1970-01-01T12:00:00”)返回 0.5。
备注
假定使用公历;这不是普遍的做法。详情请参阅模块文档字符串。
- matplotlib.dates.datestr2num(d, default=None)[source]#
使用
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.get_epoch()[source]#
获取
dates
使用的纪元。- 返回:
- epochstr
纪元的字符串(可由
numpy.datetime64
解析)。
- matplotlib.dates.num2date(x, tz=None)[source]#
将 Matplotlib 日期转换为
datetime
对象。- 参数:
- xfloat 或 float 序列
自纪元以来的天数(小数部分表示小时、分钟、秒)。有关纪元,请参阅
get_epoch
,纪元可以通过rcParams["date.epoch"]
(默认值:'1970-01-01T00:00:00'
)或set_epoch
更改。- tz字符串或
tzinfo
,默认值:rcParams["timezone"]
(默认值:'UTC'
) x 的时区。如果为字符串,tz 将传递给
dateutil.tz
。
- 返回:
备注
假定使用公历;这不是普遍的做法。详情请参阅模块文档字符串。
- matplotlib.dates.num2timedelta(x)[source]#
将天数转换为
timedelta
对象。如果 x 是一个序列,将返回
timedelta
对象序列。- 参数:
- xfloat,float 序列
天数。小数部分表示小时、分钟、秒。
- 返回:
datetime.timedelta
或 list[datetime.timedelta
]
- class 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` 实例有两种不同的方法。第一种是传递两个日期/`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` 时考虑的属性顺序是
年
月
日
小时
分钟
秒
微秒
最后,应用工作日规则,使用上述描述的规则。
例如:
>>> 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 小时,得到第二天的第 14 小时,最后应用工作日规则,但由于第二天已经是星期一,因此没有效果。
- normalized()#
返回此对象的一个版本,其中相对属性完全使用整数值表示。
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
- 返回:
返回一个
dateutil.relativedelta.relativedelta
对象。
- property weeks#
- class 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
。
- matplotlib.dates.set_epoch(epoch)[source]#
设置日期时间计算的纪元(日期原点)。
默认纪元是
rcParams["date.epoch"]
(默认值:'1970-01-01T00:00:00'
)。如果需要微秒精度,则要绘制的日期需要与纪元相距约 70 年以内。Matplotlib 内部将日期表示为自纪元以来的天数,因此浮点动态范围需要保持在 2^52 的因子范围内。
必须在转换任何日期之前调用
set_epoch
(即在导入部分附近),否则将引发 `RuntimeError`。另请参阅 日期精度和纪元。
- 参数:
- epochstr
有效的 UTC 日期,可由
numpy.datetime64
解析(不包括时区)。