2017-12-05 7 views
0

timedeltaで作業しているときにちょっとした問題がありました。xlimを設定しています。xaxisがtimedeltaのときにxlimをmatplotlibに設定しました

import pandas as pd 
import matplotlib.pyplot as plt 
from matplotlib.dates import DateFormatter 
import datetime 

fig1 = plt.figure(figsize=(20,10)) 
ax1 = fig1.add_subplot(111) 

df = pd.DataFrame({'deltaTime': [0, 10, 20, 30], 'length': [0.002, 0.005, 0.004, 0.003]}) 
df['deltaTime'] = pd.to_timedelta(df['deltaTime'], unit='m') 

ax1.xaxis.set_major_formatter(DateFormatter('%M')) 


ax1.set_xlim([datetime.time(0,0,0), datetime.time(1,0,0)]) 


ax1.plot_date(df['deltaTime'], df['length'], marker='o', markersize=5, linestyle='-') 

plt.show() 

この行は動作しないようです。

ax1.set_xlim([datetime.time(0,0,0), datetime.time(1,0,0)]) 

は私がパンダのはtimedeltaを使用していたときに私の制限が設定され得るために使用することができると同様のものがありますか?

答えて

1

matplotlib plot_dateは、timedelta(期間)オブジェクトではなく、datetimeオブジェクトであるxとyを受け取ります。次のようにtimedeltaオブジェクトをdatetimeオブジェクトに変換することができます(timedeltaで日付オブジェクトを追加することによって)。これがあなたが探していたものだと願ってください。

0 2017-12-04 00:00:00 
1 2017-12-04 00:10:00 
2 2017-12-04 00:20:00 
3 2017-12-04 00:30:00 
Name: start_date, dtype: datetime64[ns] 

​​

import pandas as pd 
import matplotlib.pyplot as plt 
from matplotlib.dates import DateFormatter 
import datetime 


fig1 = plt.figure(figsize=(4,4)) 
ax1 = fig1.add_subplot(111) 

df = pd.DataFrame({'deltaTime': [0, 10, 20, 30], 'length': [0.002, 0.005, 0.004, 0.003]}) 

df['deltaTime'] = pd.to_timedelta(df['deltaTime'], unit='m') 

df['start_date'] = pd.Timestamp('20171204')+ df['deltaTime'] 
print df['start_date'] 

ax1.plot_date(df['start_date'], df['length'], marker='o', markersize=5, linestyle='-')        
ax1.xaxis.set_major_formatter(DateFormatter('%M')) 

ax1.set_xlim(['20171204 00:10:00', '20171204 00:30:00']) 

plt.show() 

結果

関連する問題