Distance Speed Heart Rate Pace
Timestamp
00:00:00 5.03 2.249 138 00:07:25
00:00:09 26.33 2.575 138 00:06:28
00:00:17 47.53 2.659 139 00:06:16
00:00:25 69.52 2.687 138 00:06:12
我有这个数据框,我想用df.plot(subplots=True)
当我绘制它时,绘制距离,速度和心率,但不是Pace。 如果有帮助的数据类型:
Distance float64
Speed float64
Heart Rate int64
Pace timedelta64[ns]
dtype: object
问题似乎是你无法绘制timedelta与时间的关系。 我怎样才能做到这一点?
答案 0 :(得分:1)
您可以将速度转换为秒:
df['Pace'] = df['Pace'].dt.total_seconds()
如果您不想更改原始列,可以将其分配给临时数据帧:
df.assign(Pace=df['Pace'].dt.total_seconds()).plot(subplots=True)
修改:为了覆盖刻度标签:
首先,定义格式化程序函数
import matplotlib.ticker as tkr
import datetime
def func(x, pos):
return str(datetime.timedelta(seconds=x))
pace_format = tkr.FuncFormatter(func)
其次,将其应用于您的图表(我假设'Pace'
以秒为单位):
ax = df['Pace'].plot()
ax.xaxis.set_major_formatter(pace_format);
使用子图时,您需要“到达”正确的ax
对象。