[英]matplotlib “axis.invert_xaxis” crashes when using datetime
[英]convert datetime to number for matplotlib datetime xaxis
如何将日期时间转换为 matplotlib x 轴使用的浮点表示? matplotlib.dates.date2num
似乎无法按以下方式工作...
import pandas as pd
import matplotlib as mpl
import datetime
idx = pd.DatetimeIndex(
[
'2021-12-21 10:25:00+00:00', '2021-12-21 10:30:00+00:00',
'2021-12-21 10:35:00+00:00', '2021-12-21 10:40:00+00:00',
'2021-12-21 10:45:00+00:00', '2021-12-21 10:50:00+00:00',
'2021-12-21 10:55:00+00:00', '2021-12-21 11:00:00+00:00',
'2021-12-21 11:05:00+00:00', '2021-12-21 11:10:00+00:00'
],
dtype='datetime64[ns, Europe/London]',
name='time',
freq=None
)
s = pd.Series(
[0.6, 1.8, 2.7, 1.8, 1.5, 2.1, 0.9, 1.8, 3.2, 4.4],
index=idx
)
fig, ax = plt.subplots()
s.plot(ax=ax)
target_x = datetime.datetime(2021, 12, 21, 18)
target_y = 2
ax.scatter(mpl.dates.date2num(target_x), target_y, marker='x')
问题似乎在这里:
>>> ax.get_xlim()
(27334705.0, 27334750.0)
然而
>>> mpl.dates.date2num(target_x)
18982.75
现在是 Epochs / 60。
>>> ax.get_xticklabels()
[Text(27334705, 0, '10:25'),
Text(27334740, 0, '11:00'),
Text(27334750, 0, '11:10')]
所以我注意到 matplotlib 表示中的数字之间的差异等于日期时间之间的分钟差异。 然后如果你检查
>>> idx[7].timestamp() / 60 #'2021-12-21 11:00:00+00:00'
27334740.0
检查出来。
我不知道这背后的原因,或者更漂亮的方法——只是注意到了这种关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.