带有连接各个 daa 点的线的箱线图
Boxplot with lines connecting individual daa points
我想制作一个箱线图,其中我正在调查的两个条件下的个人数据点在每个度量值内连接,即 LN1__00、LN2__00 等。但是,我有很难做到这一点。
这是一些示例代码和情节图...
LN1__00 <- c(5.5,2.5,4.5,3.0,5.5,11.5)
LN2__00 <- c(9.5,9.5,5.5,7.0,11.5,17.5)
LN3__00 <- c(26.5,42.5,40.5,18.0,27.5,32.5)
condition <- c("1","2","1","2","1","2")
PB_ID <- c("A","A","B","B","C","C")
Sleepstages_Lat <- data.frame(LN1__00,LN2__00,LN3__00,condition,PB_ID)
Sleepstages_Lat2 <- melt(Sleepstages_Lat, id.vars = c("PB_ID", "condition"))
# PLOT
plottitle = "Conditions"
subtitle = "Sleep (Stage) Latencies"
# define some stuff
colour_datapoints = "gray45" # gray45
shape_datapoints = 1
size_datapoints = 2
stroke_datapoints = 1 # thickness of circles
margins = unit(c(1, 8, 1, 1), 'lines')
p <- ggplot (Sleepstages_Lat2, aes(x = variable,
y=value,
fill = condition))
p <- p + geom_boxplot(outlier.shape = NA,
alpha = 0.9,
colour="black",
notch = F)+
geom_point(shape = shape_datapoints,
size = size_datapoints,
colour = colour_datapoints,
stroke = stroke_datapoints,
position = position_jitterdodge(jitter.width = 0.1, dodge.width = 0.7))+
geom_line(aes(group = interaction(PB_ID, variable)), alpha = 0.6, colour = "black", data = Sleepstages_Lat2,
position = position_jitterdodge(dodge.width = 0.7))+
theme_bw()+
coord_flip()
p
我知道有几个讨论这个话题,但我找不到正确的答案。
这并不是您所描述问题的真正解决方案,但如果适合您的情况,它可能是解决问题的方法。如果您显式组合变量和条件,则可以避免使用任何位置躲避。
LN1__00 <- c(5.5,2.5,4.5,3.0,5.5,11.5)
LN2__00 <- c(9.5,9.5,5.5,7.0,11.5,17.5)
LN3__00 <- c(26.5,42.5,40.5,18.0,27.5,32.5)
condition <- c("1","2","1","2","1","2")
PB_ID <- c("A","A","B","B","C","C")
Sleepstages_Lat <- data.frame(LN1__00,LN2__00,LN3__00,condition,PB_ID)
Sleepstages_Lat2 <- reshape2::melt(Sleepstages_Lat, id.vars = c("PB_ID", "condition"))
Sleepstages_Lat2 = Sleepstages_Lat2 %>%
unite(test, c(variable,condition), sep = "_", remove = "FALSE")
p <- ggplot (Sleepstages_Lat2, aes(x = test, y = value, fill = condition)) +
geom_boxplot(outlier.shape = NA) +
geom_point() +
geom_line(aes(group = interaction(PB_ID, variable)))+
theme_bw() +
coord_flip()
p
这段代码可以满足我的需要...
LN1__00 <- c(5.5,2.5,4.5,3.0,5.5,11.5)
LN2__00 <- c(9.5,9.5,5.5,7.0,11.5,17.5)
LN3__00 <- c(26.5,42.5,40.5,18.0,27.5,32.5)
condition <- c("1","2","1","2","1","2")
PB_ID <- c("A","A","B","B","C","C")
Sleepstages_Lat <- data.frame(LN1__00,LN2__00,LN3__00,condition,PB_ID)
Sleepstages_Lat2 <- melt(Sleepstages_Lat, id.vars = c("PB_ID", "condition"))
Sleepstages_Lat2$var.cond = paste(Sleepstages_Lat2$variable, Sleepstages_Lat2$condition, sep = "_")
#create jitter
b1 <- runif(nrow(Sleepstages_Lat2), -0.2, -0.1)
b2 <- runif(nrow(Sleepstages_Lat2), 0.1, 0.2)
Sleepstages_Lat2$b_corr <- NA
for (i in 1:nrow(Sleepstages_Lat2)){
if (Sleepstages_Lat2$condition[i] == 1){
Sleepstages_Lat2$b_corr[i] <- as.numeric(Sleepstages_Lat2$variable[i])+b1[i]
}else{
Sleepstages_Lat2$b_corr[i] <- as.numeric(Sleepstages_Lat2$variable[i])+b2[i]
}
}
# PLOT
plottitle = "Conditions"
subtitle = "Sleep (Stage) Latencies"
# define some stuff
colour_datapoints = "gray45" # gray45
shape_datapoints = 1
size_datapoints = 2
stroke_datapoints = 1 # thickness of circles
margins = unit(c(1, 8, 1, 1), 'lines')
p <- ggplot (Sleepstages_Lat2, aes(x = variable,
y=value,
fill = condition))
p <- p + geom_boxplot(outlier.shape = NA,
alpha = 0.9,
colour="black",
notch = F)+
geom_point(shape = shape_datapoints,
size = size_datapoints,
colour = colour_datapoints,
stroke = stroke_datapoints,
aes(x = b_corr,
group = var.cond))+
geom_line(aes(x = b_corr, y = value, group=interaction(PB_ID, variable)), colour = "gray68", show.legend = FALSE, linetype="dashed")+
theme_bw()+
coord_flip()
p
我想制作一个箱线图,其中我正在调查的两个条件下的个人数据点在每个度量值内连接,即 LN1__00、LN2__00 等。但是,我有很难做到这一点。
这是一些示例代码和情节图...
LN1__00 <- c(5.5,2.5,4.5,3.0,5.5,11.5)
LN2__00 <- c(9.5,9.5,5.5,7.0,11.5,17.5)
LN3__00 <- c(26.5,42.5,40.5,18.0,27.5,32.5)
condition <- c("1","2","1","2","1","2")
PB_ID <- c("A","A","B","B","C","C")
Sleepstages_Lat <- data.frame(LN1__00,LN2__00,LN3__00,condition,PB_ID)
Sleepstages_Lat2 <- melt(Sleepstages_Lat, id.vars = c("PB_ID", "condition"))
# PLOT
plottitle = "Conditions"
subtitle = "Sleep (Stage) Latencies"
# define some stuff
colour_datapoints = "gray45" # gray45
shape_datapoints = 1
size_datapoints = 2
stroke_datapoints = 1 # thickness of circles
margins = unit(c(1, 8, 1, 1), 'lines')
p <- ggplot (Sleepstages_Lat2, aes(x = variable,
y=value,
fill = condition))
p <- p + geom_boxplot(outlier.shape = NA,
alpha = 0.9,
colour="black",
notch = F)+
geom_point(shape = shape_datapoints,
size = size_datapoints,
colour = colour_datapoints,
stroke = stroke_datapoints,
position = position_jitterdodge(jitter.width = 0.1, dodge.width = 0.7))+
geom_line(aes(group = interaction(PB_ID, variable)), alpha = 0.6, colour = "black", data = Sleepstages_Lat2,
position = position_jitterdodge(dodge.width = 0.7))+
theme_bw()+
coord_flip()
p
我知道有几个讨论这个话题,但我找不到正确的答案。
这并不是您所描述问题的真正解决方案,但如果适合您的情况,它可能是解决问题的方法。如果您显式组合变量和条件,则可以避免使用任何位置躲避。
LN1__00 <- c(5.5,2.5,4.5,3.0,5.5,11.5)
LN2__00 <- c(9.5,9.5,5.5,7.0,11.5,17.5)
LN3__00 <- c(26.5,42.5,40.5,18.0,27.5,32.5)
condition <- c("1","2","1","2","1","2")
PB_ID <- c("A","A","B","B","C","C")
Sleepstages_Lat <- data.frame(LN1__00,LN2__00,LN3__00,condition,PB_ID)
Sleepstages_Lat2 <- reshape2::melt(Sleepstages_Lat, id.vars = c("PB_ID", "condition"))
Sleepstages_Lat2 = Sleepstages_Lat2 %>%
unite(test, c(variable,condition), sep = "_", remove = "FALSE")
p <- ggplot (Sleepstages_Lat2, aes(x = test, y = value, fill = condition)) +
geom_boxplot(outlier.shape = NA) +
geom_point() +
geom_line(aes(group = interaction(PB_ID, variable)))+
theme_bw() +
coord_flip()
p
这段代码可以满足我的需要...
LN1__00 <- c(5.5,2.5,4.5,3.0,5.5,11.5)
LN2__00 <- c(9.5,9.5,5.5,7.0,11.5,17.5)
LN3__00 <- c(26.5,42.5,40.5,18.0,27.5,32.5)
condition <- c("1","2","1","2","1","2")
PB_ID <- c("A","A","B","B","C","C")
Sleepstages_Lat <- data.frame(LN1__00,LN2__00,LN3__00,condition,PB_ID)
Sleepstages_Lat2 <- melt(Sleepstages_Lat, id.vars = c("PB_ID", "condition"))
Sleepstages_Lat2$var.cond = paste(Sleepstages_Lat2$variable, Sleepstages_Lat2$condition, sep = "_")
#create jitter
b1 <- runif(nrow(Sleepstages_Lat2), -0.2, -0.1)
b2 <- runif(nrow(Sleepstages_Lat2), 0.1, 0.2)
Sleepstages_Lat2$b_corr <- NA
for (i in 1:nrow(Sleepstages_Lat2)){
if (Sleepstages_Lat2$condition[i] == 1){
Sleepstages_Lat2$b_corr[i] <- as.numeric(Sleepstages_Lat2$variable[i])+b1[i]
}else{
Sleepstages_Lat2$b_corr[i] <- as.numeric(Sleepstages_Lat2$variable[i])+b2[i]
}
}
# PLOT
plottitle = "Conditions"
subtitle = "Sleep (Stage) Latencies"
# define some stuff
colour_datapoints = "gray45" # gray45
shape_datapoints = 1
size_datapoints = 2
stroke_datapoints = 1 # thickness of circles
margins = unit(c(1, 8, 1, 1), 'lines')
p <- ggplot (Sleepstages_Lat2, aes(x = variable,
y=value,
fill = condition))
p <- p + geom_boxplot(outlier.shape = NA,
alpha = 0.9,
colour="black",
notch = F)+
geom_point(shape = shape_datapoints,
size = size_datapoints,
colour = colour_datapoints,
stroke = stroke_datapoints,
aes(x = b_corr,
group = var.cond))+
geom_line(aes(x = b_corr, y = value, group=interaction(PB_ID, variable)), colour = "gray68", show.legend = FALSE, linetype="dashed")+
theme_bw()+
coord_flip()
p