【发布时间】:2017-11-21 04:52:34
【问题描述】:
我有一个加速度计数据的时间序列数据集,我在该数据集上运行了一些峰值检测来识别步态的不同阶段。我正在使用ggplot 将左右腿数据绘制为facet_grid 中的两个方面,现在我想覆盖geom_rects 以显示每条腿的不同步态阶段。我可以添加矩形层,但我不知道如何将左侧 geom_rects 保持在左腿刻面,将右侧 geom_rects 保留在右侧刻面。例如,在步态周期中,当您的体重在左腿上(左侧的站立阶段)时,右腿向前摆动(右侧的摆动阶段),因此阶段时间不同。您可以通过直观地比较左波谷和右波谷的时间点来看到这一点。
我已经用谷歌搜索并解决了这个问题,但我找不到答案。我发现的最接近的是this,但作者在各个方面使用了相同的geom_rect,所以这不是我想要的。我附上了一个简化的 Rscript 和 csv 的数据。谁能给我一些提示来制作这个情节?
facet_rects_test.zip (.csv and R Script)
谢谢!
【问题讨论】:
-
如果您用来绘制矩形的数据框有一个
side列,标记哪些数据进入Left构面,哪些数据进入Right,那么这应该足以获取在正确方面绘制的数据。 -
第一遍我没能完全理解你的情节代码,但有一个突出的地方是像
aes(xmin=acceldf$time_ms[swingStart], xmax=acceldf$time_ms[heelStrike]-1, ymin=-Inf, ymax=Inf, fill="Swing")这样的结构。通常你不会在aes中命名数据框(尤其是不同的数据框)或子集。您使用data参数将数据框提供给ggplot或geom_rect,并在aes中使用裸变量名。 -
尝试在
aes中进行子集化或多次调用geom_rect似乎表明您的数据应该被融合为“更长”格式,或者您需要一个额外的列来标记所需的分组,所以您可以调用geom_rect一次,并使用fill之类的美学映射来为不同的组获取不同颜色的矩形。