2017-07-18 379 views
1
  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)繪製timedelta主場迎戰大熊貓

當我繪製它距離,速度和心率得到繪製,但不是佩斯繪製。 類型的數據是否有幫助:

Distance    float64 
Speed     float64 
Heart Rate    int64 
Pace   timedelta64[ns] 
dtype: object 

的問題似乎是,你不能繪製timedelta與時間。 我該如何做這項工作?

回答

1

你可以步伐轉換成秒:

df['Pace'] = df['Pace'].dt.total_seconds() 

如果你不想改變原有列,可以將其分配到一個臨時數據幀:

df.assign(Pace=df['Pace'].dt.total_seconds()).plot(subplots=True) 

編輯:爲了覆蓋刻度標籤:

冷杉T,定義一個格式化功能

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目的。

+0

我的速度原本是在幾秒鐘內完成的,但將它們轉換爲mm:ss,因爲這是速度合理的唯一格式。 – xPunkt

+0

然後您應該繪製秒數,但會覆蓋刻度標籤。 – IanS

+0

您能否舉一個例子來說明如何覆蓋刻度標籤以顯示mm的速度:ss – xPunkt