在 Pandas 中将两个数据框绘制在同一图中

3

嘿,我想在Pandas中的一个图中绘制2个数据框。

我的数据帧如下所示(从数据帧中摘录):

       Timestamp  Distance     Speed  Heart Rate   Pace
1          0.0      3.02  2.353079          89  425.0
2          1.0      5.10  1.847000          92  541.0
3          2.0      7.48  1.969000          96  508.0
4          4.0     14.13  2.902000          93  345.0
5         10.0     28.01  2.967000          96  337.0
6         11.0     30.96  2.995000         101  334.0
7         12.0     33.79  2.995000         104  334.0
8         13.0     36.56  2.967000         114  337.0

他们的项目数量不同,但格式相同。

现在看起来是这样的

我正在用这段代码绘制它。

ax = dataframe1[['Speed','Heart Rate','Pace']].plot(subplots=True,
                                               title=['Speed in m/s','Heart Rate in bmp','Pace in min/km',],
                                               x=dataframe1['Timestamp'],)

我现在想做的是,在与DataFrame1中的HeartRate(以不同颜色显示)相同的子图中绘制DataFrame2中的HeartRate,但我不知道如何实现。
2个回答

4
考虑以下方法:
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=3, ncols=1)    
plt.subplots_adjust(wspace=0.5, hspace=0.5);

x = dataframe1.set_index('Timestamp').rename_axis(None)    
x['Speed'].plot(ax=axes[0], title='Speed in m/s', legend=True)
x['Heart Rate'].plot(ax=axes[1], title='Heart Rate in bmp', legend=True)
x['Pace'].plot(ax=axes[2], title='Pace in min/km', legend=True)

dataframe1['Heart Rate'] * 2 模拟为 dataframe2['HeartRate']

x[['Heart Rate']].rename(columns={'Heart Rate':'Heart Rate2'}).mul(2).plot(ax=axes[1], legend=True)

结果:

这里输入图片描述


(注:该内容为HTML代码,无法翻译)

谢谢,这个方法确实有效,但出现了一个问题,现在x轴是Dataframe的索引,而不是dataframe1['Timestamp']中的值,尽管我使用之前的代码绘图时它是有效的。 - xPunkt
2
我现在应该如何使用Dataframe2?如果我只是使用“dataframe2['Heart Rate'].plot(ax=axes[1])”,那么Dataframe1可以很好地绘制,但对于Dataframe2,仍然使用索引而不是时间戳。没关系,我已经想出来了。使用“x2 = dataframe2.set_index('Timestamp').rename_axis(None)”然后“x2['Heart Rate'].plot(ax=axes[1])”。 - xPunkt
dataframe2 的长度和 dataframe1 是否相同? - MaxU - stand with Ukraine
1
不,它们的长度不相同,但我已经解决了(请参见上面评论的编辑)。谢谢。 - xPunkt

1
你需要先 join 这些数据框,然后:
dataframe1['Heart Rate2'] = dataframe2['Heart Rate']
dataframe1[['Speed','Heart Rate','Pace', 'Heart Rate2']].plot()

好的,谢谢。但是我该如何在同一幅子图中显示两个心率(1和2)? - xPunkt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接