如何解读Matplotlib中日期时间刻度的数值化结果
这些数值的含义:Matplotlib的日期时间内部存储格式
这些浮点数是Matplotlib用来内部存储日期时间的数值表示,本质是从1900年1月1日00:00开始累计的总天数:
- 整数部分:从1900-01-01到目标日期的完整天数
- 小数部分:目标时间在当天的占比(比如0.5对应中午12点,0.25对应早上6点)
对应你的例子验证
拿第一个刻度值15880.46527778来说:
- 整数部分
15880:从1900-01-01往后数15880天,正好是2013-06-24 - 小数部分
0.46527778:乘以24小时得到≈11.1667小时,也就是11小时10分钟,刚好对应你设置的x轴起始时间dt.datetime(2013,6,24,11,10)
你可以用这段代码验证转换逻辑:
import datetime as dt base_date = dt.datetime(1900, 1, 1) # 取首尾两个刻度值验证 for tick_val in [15880.46527778, 15880.47222222]: target_datetime = base_date + dt.timedelta(days=tick_val) print(target_datetime)
输出会对应你设置的x轴起止时间:2013-06-24 11:10:00和2013-06-24 11:20:00左右。
为什么用这种格式?
Matplotlib底层是基于数值的绘图系统,把日期时间转成浮点数后,能方便地进行坐标轴缩放、数据计算等操作。你看到的11:13这类时间文本,只是Matplotlib对这些数值做了格式化显示,轴的底层数值始终是累计天数。如果需要把这些数值转回datetime对象,用上面的timedelta方法即可。
内容的提问来源于stack exchange,提问作者patrick7
相关产品推荐
相关产品推荐

