考虑此处创建的数据
:
set.seed(123)
data <- data.frame(time = c(1:1000, 1:1030, 1:2000), ID = rep(c('a','b','c'), c(1000,1030,2000)), variable = rnorm (4030))
我们测量了 3 个个体一生中的一些过程变量
,每个变量都用唯一的 ID
表示。假设时间
是每个个体大小的函数,因此每个ID
具有不同的长度。我们注意到每个时间序列中的某些模式或属性对于每个 ID 都是一致的,这意味着它发生在所有时间序列中(即在每个 ID 中的某个点)的一生),但他们处于不同的时间
。
假设对于个体a
来说,这种情况发生在time == 500
,对于个体b
来说,这种情况发生在time == 560
,对于单个c
,time == 602
。
我们可以创建一个典型的线图来显示每个时间序列,如下所示:
library(tidyverse)
data%>%
ggplot(aes(time,variable, color = ID))+
geom_point()+
geom_line()
但是我们如何才能将每个时间序列集中在这些“公共(public)数据点”上,以显示每个 ID
中的“模式”有多相似?换句话说,在图中,ID == c
将首先开始,因为它最长,并且 c
的数据点 602 将显示在与ID == a
为数据点 500,ID == b
为数据点 560。
最佳答案
你不能这样做吗:
data$event_time <- rep(c(500, 560, 602), c(1000, 1030, 2000))
data %>%
ggplot(aes(time - event_time, variable, color = ID)) +
geom_point() +
geom_line() +
geom_vline(xintercept = 0, linetype = 2) +
labs(x = "Time since life event")
关于r - 如何将不同长度的时间序列围绕 ggplot 图形中的特定点居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64560756/