【发布时间】:2011-07-13 16:06:57
【问题描述】:
我正在尝试复制批次/病例/治疗的点图,其中线条与 ggplot 中的因素交叉。这类似于 Douglas Bates 的线性模型课程中的这个图,它在 y 轴上显示 6 个组,在 x 轴上显示连续响应,每个组的平均值由一条线连接:
以与 lme4 包捆绑的 sleepstudy 数据集为例,我有:
library(ggplot2)
p <- ggplot(sleepstudy, aes(x=Reaction, y=reorder(Subject, Reaction)))
p <- p + geom_point()
print(p)
这给出了基本的点图,y 轴上的主题按反应时间增加的顺序排列。
然后我创建一个数据框,其中包含每个主题的平均反应时间:
mean_rxn <- function(df) mean(df$Reaction, na.rm=T)
sleepsummary <- ddply(sleepstudy, .(Subject), mean_rxn)
我能够在每个主题的平均值上绘制点:
p.points <- p + geom_point(data=sleepsummary, aes(x=V1, y=reorder(Subject, V1), size=10))
print(p.points)
但我无法跨越这些因素。也就是说,从 geom_point 更改为 geom_line 什么都不显示
# does nothing
p.line <- p + geom_line(data=sleepsummary, aes(x=V1, y=reorder(Subject, V1)))
print(p.line)
有人有什么想法吗?最终,我的目标是以这种方式在原始数据之上绘制一些模型结果,因此在原始数据帧的绘图中“即时”计算手段的方法不太有用,因为我需要从中获取数据点更复杂的模型拟合。
感谢您的帮助!
瑞恩
【问题讨论】: