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

如何在Seaborn折线图X轴显示HH:mm:ss.f格式时间而非数字

解决Seaborn折线图X轴显示HH:mm:ss.f时间格式的问题

问题说明

你的DataFrame包含Hour(带毫秒的时间字符串)和Acceleration列,将Hour转为datetime.time类型后用Seaborn绘制折线图,X轴却显示数字(如20000、40000),希望改为显示HH:mm:ss.f格式的时间。

问题原因

datetime.time类型在绘图时会被自动转换为从午夜开始的毫秒数值,Seaborn默认使用这个数值作为X轴刻度,因此无法直接显示时间格式。

解决方法

不要将Hour转为dt.time,保留完整的datetime对象,再通过Matplotlib的日期格式化工具设置X轴刻度格式:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter

# 读取数据
DF = pd.read_csv(r'CH:\Users\3Yellow_S1.csv', delimiter=';')

# 将Hour转为完整的datetime类型(无需提取time部分)
DF['Hour'] = pd.to_datetime(DF['Hour'])

# 创建绘图画布并绘制折线图
plt.figure(figsize=(10, 6))
sns.lineplot(data=DF, x='Hour', y='Acceleration')

# 设置X轴时间显示格式为HH:mm:ss.f
time_formatter = DateFormatter("%H:%M:%S.%f")
plt.gca().xaxis.set_major_formatter(time_formatter)

# 旋转X轴标签,避免重叠
plt.xticks(rotation=45)

plt.show()

补充说明

  • pd.to_datetime会自动为纯时间字符串补充当前日期,但绘图时只会显示你指定的时间部分,不影响可视化效果。
  • 如果X轴标签仍然过于密集,可以通过设置刻度间隔优化,比如添加from matplotlib.dates import MillisecondLocator后,用plt.gca().xaxis.set_major_locator(MillisecondLocator(interval=100))设置每100毫秒显示一个刻度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:33:19