我的问题是绘制两个具有不同频率和值间隔的不同 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()
由于motionData 有超过 60,000 行值,heartRate 看起来就像从来不存在一样。但两个值的时间间隔相同。每5-6秒获取一次心率,每秒获取10次motionData。
任何帮助将不胜感激,在提出这个问题之前我已经检查了很多问题,但我找不到可以帮助我解决问题的问题。谢谢!
最佳答案
您还需要一些 x 轴数据。
您的数据框的列中已经包含此数据,或者您需要创建该列。然后
ax = xdf.plot(x='TimeStamp', y=['AccelerationX', 'AccelerationY'])
ydf.plot(x='TimeStamp', y='Value', ax=ax)
将显示 x 轴上带有 TimeStamp
的所有曲线。
使用线性插值肯定是可能的,但可能没有多大意义,因为折线图的线条正是这样做的:它们线性连接两个点。
关于python - 如何在同一张图中绘制不同频率的各种数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45613143/