Datetime 如何在x轴熊猫(matplotlib)绘图中仅获取HMS格式

Datetime 如何在x轴熊猫(matplotlib)绘图中仅获取HMS格式,datetime,matplotlib,pandas,axis-labels,timedelta,Datetime,Matplotlib,Pandas,Axis Labels,Timedelta,我正试图绘制几个小时内的温度测量结果。我的数据文件包含以毫秒为单位的时间 from datetime import timedelta from pandas import to_timedelta import pandas as pd import datetime DT df = pd.read_csv('temperature_measurements.txt') my_columns=['time_ms','tempC','humidity'] df.columns = my_colu

我正试图绘制几个小时内的温度测量结果。我的数据文件包含以毫秒为单位的时间

from datetime import timedelta
from pandas import to_timedelta
import pandas as pd
import datetime DT
df = pd.read_csv('temperature_measurements.txt')
my_columns=['time_ms','tempC','humidity']
df.columns = my_columns

#remove timestamp offset
startTime = df['time_ms'].min()
#get time in seconds, round off because I was getting >2 significant figuress
df['time_s']=np.round((df['time_ms']-startTime)/1000)

#convert to datetime object
df['time']=pd.to_timedelta((df['time_s']),unit='s')
df.plot(x='time',y='tempC')
我得到一个x轴范围从“0天00:00:00”到“0天01:14:11”的图。 我想将其截断以仅显示HH:MM:SS(例如00:00:00到1:14:11)。如何删除x轴中的“0天”前缀?另外,是否有更简单的pd命令将数据转换为HMS对象? 谢谢你的帮助

编辑:感谢@HYRY,这是我的最终代码

plt.plot(df.time, df.tempC)
ax = plt.gca()
tick_labels = ax.xaxis.major.formatter.seq
ax.xaxis.major.formatter.seq = [label.split()[-1] if label else "" for label in tick_labels]
plt.xticks(rotation=90) 
试一试


在df.plot(x='time',y='tempC')之后添加以下代码:


谢谢您的建议,但我发现“Figure”对象没有属性“autofmtxdate”错误。感谢@user1324362(快速而优雅地解决)您必须在导入语句中添加import matplotlib.pyplot作为plt。感谢@KirubaharanJ的回复,但我仍然得到相同的错误“Figure”对象没有属性“autofmtxdata”,如果我导入matplotlib.pyplot,对不起,您必须使用fig.autofmt_xdate(旋转=90),我更正了我的回答谢谢@HYRY这对我有用!我必须添加ax=plt.gca()(需要添加一行来定义ax)
import matplotlib.pyplot as plt
fig = plt.figure() # creates matplotlib figure object
plt.plot(df.time, df.tempC) # plots x, y
fig.autofmt_xdate(rotation=90) # rotates the date to 90 degree to make it look better
tick_labels = ax.xaxis.major.formatter.seq
ax.xaxis.major.formatter.seq = [label.split()[-1] if label else "" for label in tick_labels]