python – 格式化pandas y轴以显示时间而不是总秒数
发布时间:2020-12-20 11:04:01 所属栏目:Python 来源:网络整理
导读:我在数据框中有测量.列是不同的对象. Index是datetime64索引.现在,对于每个日期,我对每列的总秒数(int)进行了测量. 一切都很好,我唯一的问题,而不是在y轴上显示6000秒我想显示1:40表示1小时40分钟. 我怎么能真正实现这个目标? day Object1 Object22017-01-0
我在数据框中有测量.列是不同的对象. Index是datetime64索引.现在,对于每个日期,我对每列的总秒数(int)进行了测量.
一切都很好,我唯一的问题,而不是在y轴上显示6000秒我想显示1:40表示1小时40分钟. 我怎么能真正实现这个目标? day Object1 Object2 2017-01-01 6000 1234 我想要 day Object1 Object2 2017-01-01 1:40:00 00:20:34 你能否告诉我如何做到这一点 解决方法
这是可能的,但本机不支持
ploting timedelta .
df['Object1'] = pd.to_timedelta(df['Object1'],unit='s') df['Object2'] = pd.to_timedelta(df['Object2'],unit='s') 要么: cols = ['Object1','Object2'] df[cols] = df[cols].apply(lambda x: pd.to_timedelta(x,unit='s')) print (df) day Object1 Object2 0 2017-01-01 01:40:00 00:20:34 但FuncFormatter是可能的: df = pd.DataFrame({'Object1': [6000,4000,3000],'Object2':[3000,5000,2110]}) import matplotlib.ticker as tkr import datetime def func(x,pos): return str(datetime.timedelta(seconds=x)) fmt = tkr.FuncFormatter(func) ax = df.plot(x='Object1',y='Object2',rot=90) ax.xaxis.set_major_formatter(fmt) ax.yaxis.set_major_formatter(fmt) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |