我有这个加速度计数据集,并且假设我对每个受试者(总共30个受试者)进行了n次观察,以获得身体加速度×时间。
我想制作一个情节,以便在y轴上以不同颜色绘制每个主体的这些身体加速度x时间点,而x轴只是一个指数。我试过这个:
ggplot(data = filtered_data_walk, aes(x = seq_along(filtered_data_walk$'body-acceleration-mean-y-time'), y = filtered_data_walk$'body-acceleration-mean-y-time')) +
geom_line(aes(color = filtered_data_walk$subject))
但是,问题在于它没有叠加30条线,相反,它们彼此并排运行。换句话说,我最终得到n1 + n2 + n3 + ... + n30 x索引点,而不是max {n1,n2,...,n30}。这是我第一次发帖,所以我希望这是有道理的(我知道我的格式很糟糕)。
我想到的一个解决方案是创建一个新变量,它为每个主题的所有观察值赋予1到n的值。因此,例如,如果我对subject1进行了6次观察,对subject2进行了4次观察,对subject3进行了9次观察,则这个新变量的排序方式如下:
1 2 3 4 5 6 1 2 3 4 1 2 3 4 5 6 7 8 9
有一种简单的方法吗?请帮忙,ty。
答案 0 :(得分:1)
假设您的数据被格式化为data.frame或矩阵,对于像
这样的玩具数据集x <- data.frame(replicate(5, rnorm(10)))
x
# X1 X2 X3 X4 X5
# 1 -1.36452272 -1.46446475 2.0444381 0.001585876 -1.1085990
# 2 -1.41303046 -0.14690269 1.6179084 -0.310162018 -1.5528733
# 3 -0.15319554 -0.18779791 -0.3005058 0.351619212 1.6282955
# 4 -0.38712167 -0.14867239 -1.0776359 0.106694311 -0.7065382
# 5 -0.50711166 -0.95992916 1.3522922 1.437085757 -0.7921355
# 6 -0.82377208 0.50423328 -0.5366513 -1.315263679 1.0604499
# 7 -0.01462037 -1.15213287 0.9910678 0.372623508 1.9002438
# 8 1.49721113 -0.84914197 0.2422053 0.337141898 1.2405208
# 9 1.95914245 -1.43041783 0.2190829 -1.797396822 0.4970690
# 10 -1.75726827 -0.04123615 -0.1660454 -1.071688768 -0.3331887
......你可能会用
之类的东西到达那里plot(x[,1], type='l', xlim=c(1, nrow(x)), ylim=c(min(x), max(x)))
for(i in 2:ncol(x)) lines(x[,i], col=i)
您可以使用格式化更多内容,当然,可以使用lty=
和lwd=
进行操作,也可以使用您自己选择的颜色渐变等。
如果您的数据采用以下格式......
x <- data.frame(id=c("A","A","A","B","B","B","B","C","C"), acc=rnorm(9))
x
# id acc
# 1 A 0.1796964
# 2 A 0.8770237
# 3 A -2.4413527
# 4 B 0.9379746
# 5 B -0.3416141
# 6 B -0.2921062
# 7 B 0.1440221
# 8 C -0.3248310
# 9 C -0.1058267
......你可以用
到达那里maxn <- max(with(x, tapply(acc, id, length)))
ids <- sort(unique(x$id))
plot(x$acc[x$id==ids[1]], type='l', xlim=c(1,maxn), ylim=c(min(x$acc),max(x$acc)))
for(i in 2:length(ids)) lines(x$acc[x$id==ids[i]], col=i)
希望这会有所帮助,并且我正确地解释了你的问题 -
答案 1 :(得分:0)