我有一个患者数据,如下所示。每个受试者在 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) )
Run Code Online (Sandbox Code Playgroud)
我制作了一个带有重叠数据点的箱线图:
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')
Run Code Online (Sandbox Code Playgroud)
现在我需要添加线条来链接时间过程中的所有患者(数据点)。
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')
Run Code Online (Sandbox Code Playgroud)
所有的线条似乎都“与数据点断开了”。我该如何解决这个问题?我花了几个小时但找不到解决方案。有人可以帮我吗?多谢。
前几天在开发版本中position_jitterdodge 获得了种子争论。所以,
devtools::install_github("tidyverse/ggplot2")
library(ggplot2)
Run Code Online (Sandbox Code Playgroud)
进而
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')
Run Code Online (Sandbox Code Playgroud)
给出这个情节