0

再会,

我正在使用 xyplot() 创建一个意大利面条图……对于每个 subject_identifier,它会随着时间的推移绘制 Y 的分数。

xyplot(Y~time,groups=subject_identifier,data=c,type=c('l'))

每个 subject_identifier 都会在某个指定时间 event_time 发生一个事件。如何在 event_time 为每个人在每行上打一个勾或一个点?

谢谢

4

1 回答 1

1

如果 event_times 是一个向量:event_times <- c(5,3,6,8)并且您希望groups与这些索引按顺序排列,那么您可以使用组作为 event_times 的索引,然后它将成为面板参数中 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'))

所以第一组在 time=5 被打勾,第二组在 time=3 被打勾,以此类推。(group-1)*10尽管可能有更清洁的方法,但需要抵消panel.superpose. 蜱的其他选项当然是可能的,但您在问题介绍中相当模糊。

在此处输入图像描述

于 2012-06-13T21:15:32.157 回答