2017-08-10 315 views
1

我的問題是繪製兩個不同的頻率和數值間隔的csv文件。我只是想在單位時間內比較heartRate和motionData。如何在同一圖表中繪製不同頻率的各種數據?

我使用matplotlib來實現這一點。

下面的代碼給了我這樣一個圖:

import numpy as np 
import pandas 
import matplotlib.pyplot as plt 

# fake data 
x = np.genfromtxt('/Users/yusufkamilak/Desktop/motionData.csv', delimiter=',', skip_header=10, 
        skip_footer=0, names=['TimeStamp', 'AccelerationX']) 
y = np.genfromtxt('/Users/yusufkamilak/Desktop/heartRate.csv', delimiter=',', skip_header=2, 
        skip_footer=0, names=['TimeStamp', 'Value']) 

# data frames 
xdf = pandas.DataFrame(x) 
ydf = pandas.DataFrame(y) 

# plot x data, get an MPL axes object 
ax = xdf.plot() 

# plot y data, using the axes already created 
ydf.plot(ax=ax) 



plt.show() 

Heart Rate frequency should be extended to motionData 心率頻率應擴展到motionData

This is how HeartRate normally looks in ~1/6 Hz 這是怎麼心率通常看起來〜1/6的赫茲

由於motionData具有超過60,000行的值,heartRate看起來好像從不存在。但是兩個值的時間間隔是相同的。每5-6秒鐘獲取心率,每秒動作數據10次。

任何幫助將不勝感激,我之前詢問過許多問題,但我找不到幫助我解決問題的方法。謝謝!

+0

您還需要一些x軸數據。您的數據框或者已經在列中包含這些數據,或者您需要創建該列。然後'df.plot(x ='TimeStamp',y ='Value')' – ImportanceOfBeingErnest

+0

我被告知應用線性插值來實現將較低頻率的數據擴展到較高頻率的數據並將它們繪製在同一圖形中。我看過numpy的interp函數,但我不明白fp是什麼。順便說一句,如果你把你的答案寫成答案,我可以批准它作爲接受的答案。感謝幫助。 @ImportanceOfBeingErnest –

回答

1

您還需要一些x軸數據。
您的數據框已經在列中包含這些數據,或者您需要創建該列。然後

ax = xdf.plot(x='TimeStamp', y=['AccelerationX', 'AccelerationY']) 
ydf.plot(x='TimeStamp', y='Value', ax=ax) 

將顯示所有曲線,其中TimeStamp在x軸上。

確實有可能使用線性插值,但可能沒有多大意義,因爲線圖的線條完全符合以下條件:它們線性連接兩個點。

相關問題