我的患者数据如下所示。每个受试者在4个不同的时间点进行测量。
df <- data.frame(
result = rnorm(48, 1,3),
time = rep(c('t1', 't2', 't3', 't4'), 12 ),
subject = rep(c(1:12), each=4),
gender = rep (c('M', 'F'), 6, each=4) )
我制作了一个带有重叠数据点的箱线图:
pd = position_jitterdodge(dodge.width = 0.75, jitter.width = 0.3)
df %>%
ggplot (aes(x= time, y=result, fill=gender))+
geom_boxplot(alpha=0.2)+
geom_point(aes(color = gender),position = pd)+
scale_fill_brewer(palette = 'Set1')+
scale_color_brewer(palette = 'Set1')
现在我需要添加行来链接所有患者(数据点)沿着时间进程。
df %>%
ggplot (aes(x= time, y=result, fill=gender))+
geom_boxplot(alpha=0.2)+
geom_point(aes(color = gender, group=subject),position = pd)+
geom_line(aes(color=gender, group=subject),
position=pd, alpha=0.3)+
scale_fill_brewer(palette = 'Set1')+
scale_color_brewer(palette = 'Set1')
所有线路似乎都与数据点断开连接。我该如何解决这个问题?我花了几个小时但找不到解决方案。有人可以帮助我吗?非常感谢。
答案 0 :(得分:2)
前几天开发版position_jitterdodge
gained a seed argument。所以,
devtools::install_github("tidyverse/ggplot2")
library(ggplot2)
然后
pd = ggplot2::position_jitterdodge(dodge.width = 0.75, jitter.width = 0.3, seed = 1)
df %>%
ggplot (aes(x= time, y=result, fill=gender))+
geom_boxplot(alpha=0.2)+
geom_point(aes(color = gender, group=subject),position = pd)+
geom_line(aes(color=gender, group=subject),
position=pd, alpha=0.3)+
scale_fill_brewer(palette = 'Set1')+
scale_color_brewer(palette = 'Set1')
给出了这个情节