You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib绘图如何将x轴刻度的epoch时间转为人类可读格式

matplotlib将epoch时间轴转为可读日期格式的实现方案

核心原则:不修改原始DataFrame中存储的epoch时间值,仅在绘图渲染环节处理刻度显示格式,完全不影响后续基于epoch数值的数据处理操作。

具体实现

引入matplotlib的自定义刻度格式化工具,在刻度渲染阶段把数值型epoch时间戳转为目标格式的字符串即可,参考代码如下:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
from datetime import datetime

# 原始数据保持不变,不做任何格式转换
mydict = [{'time': 1651816500, 'b': 2},
          {'time': 1651816800, 'b': 200},
          {'time': 1651817100, 'b': 2000}]
df = pd.DataFrame(mydict)

# 定义刻度格式化函数:仅在渲染x轴标签时触发转换
def format_epoch_tick(tick_val, pos):
    return datetime.fromtimestamp(tick_val).strftime('%d.%m.%Y %H:%M')

plt.plot(df['time'], df['b'])
# 给当前x轴绑定格式化规则
plt.gca().xaxis.set_major_formatter(FuncFormatter(format_epoch_tick))
# 可选:旋转刻度标签避免文字重叠
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

补充说明

  • 上述方案中,df['time']列始终保持原始的数值型epoch格式,所有格式转换逻辑只在绘图输出刻度标签时运行,对原始数据无任何侵入性。
  • 如果需要调整时间显示样式,直接修改strftime()内的格式符即可:
    • 要显示秒级精度:'%d.%m.%Y %H:%M:%S'
    • 要切换为年-月-日顺序:'%Y-%m-%d %H:%M'
  • 如果数据时间跨度较大,可以搭配matplotlib.dates模块下的刻度定位器(如HourLocator、DayLocator)调整刻度间隔,避免标签过密影响可读性。

未做格式转换的epoch刻度效果参考:
x轴刻度为epoch格式的示例图

内容的提问来源于stack exchange,提问作者Andreas Schuldei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:09:18