美好的一天,
我正在使用xyplot()来创建意大利面条图......对于每个subject_identifier,它会绘制Y随时间的分数。
xyplot(Y~time,groups=subject_identifier,data=c,type=c('l'))
在某个指定时间event_time,每个subject_identifier都会发生一个事件。如何在每个人的event_time上为每一行写一个勾号或一个点?
由于
答案 0 :(得分:1)
如果event_times是一个向量:event_times <- c(5,3,6,8)
并且你希望groups
按顺序排列这些索引,那么你可以使用组作为event_times的索引,这将是x和x的索引y在面板参数中:
xyplot(Y~time,groups=subject_identifier,data=cdat,
panel=function(x,y,groups,...){
panel.xyplot(x,y,groups=groups,...)
panel.segments(x0=x[(grp-1)*10+event_times[grp]],
x1=x[(grp-1)*10+event_times[grp]],
y0=y[(grp-1)*10+event_times[grp]]-.2,
y1=y[(grp-1)*10+event_times[grp]]+.2, groups=groups,...)},
type=c('l'))
因此第一组在时间= 5时被勾选,第二组在时间= 3时被勾选,依此类推。需要偏移(group-1)*10
,尽管panel.superpose
可能有更简洁的方法。刻度的其他选项当然是可能的,但你在问题陈述中却相当模糊。