ggplot2/R中每个x值组合两个箱线图的困难

ggplot2/R中每个x值组合两个箱线图的困难,r,ggplot2,R,Ggplot2,请在下面找到我的数据 我希望生成一个组合箱线图,如下所示: 我有四个不同的患者类别,w$WHO==1,2,3,4,每个对应于WHO-I、WHO-II、WHO-III和未知肿瘤 我希望每个w$WHO制作两个箱线图 第一个箱线图应该显示死亡时间,如w$Follow.up.death[w$death==1]中所示。我想填充alpha/2的颜色,但应该是蓝色 第二个方框图应显示进展时间,如w$resp.time[w$response==1]所示。我希望颜色/轮廓+填充为红色,但填充的alpha应为0.2

请在下面找到我的数据

我希望生成一个组合箱线图,如下所示:

我有四个不同的患者类别,w$WHO==1,2,3,4,每个对应于WHO-I、WHO-II、WHO-III和未知肿瘤

我希望每个w$WHO制作两个箱线图

第一个箱线图应该显示死亡时间,如w$Follow.up.death[w$death==1]中所示。我想填充alpha/2的颜色,但应该是蓝色

第二个方框图应显示进展时间,如w$resp.time[w$response==1]所示。我希望颜色/轮廓+填充为红色,但填充的alpha应为0.2

w$死亡和w$响应的长度不相同

相应的图例应为总生存率和无进展生存率

我尝试了几本手册,但我不知道如何具体做到这一点-我只设法制作了一个绘图

有没有办法解决这个问题

我的数据样本

这很接近吗

# Wrangling data into a digestable format
v <- w[w$Death == 1,]
vv <- w[w$response == 1,]
df <- data.frame(x = as.factor(c(v$WHO, vv$WHO)),
                 y = c(v$Follow.up.death, vv$resp.time),
                 f = rep(c("Death", "Response"), c(nrow(v), nrow(vv))))
df <- df[!is.na(df$x),]
这很接近吗

# Wrangling data into a digestable format
v <- w[w$Death == 1,]
vv <- w[w$response == 1,]
df <- data.frame(x = as.factor(c(v$WHO, vv$WHO)),
                 y = c(v$Follow.up.death, vv$resp.time),
                 f = rep(c("Death", "Response"), c(nrow(v), nrow(vv))))
df <- df[!is.na(df$x),]

与@tuenbrand的方法类似,但使用dplyr/tidyr来处理数据:

library(tidyverse)
df <- w %>% 
  rename(Overall = "Follow.up.death", `Progression-free` = "resp.time") %>% 
  gather(key = Survival, value = Time, Overall, `Progression-free`) %>%
  filter((Death == 1 & Survival == "Overall") | 
         (response == 1 & Survival == "Progression-free")) %>% 
  mutate(WHO = paste("WHO:", WHO))

与@tuenbrand的方法类似,但使用dplyr/tidyr来处理数据:

library(tidyverse)
df <- w %>% 
  rename(Overall = "Follow.up.death", `Progression-free` = "resp.time") %>% 
  gather(key = Survival, value = Time, Overall, `Progression-free`) %>%
  filter((Death == 1 & Survival == "Overall") | 
         (response == 1 & Survival == "Progression-free")) %>% 
  mutate(WHO = paste("WHO:", WHO))

什么是低温和高温?哪一列对应于那些?我忘了裁剪出来。我已经编辑了上面的帖子。什么是低温和高温?哪一列对应于那些?我忘了裁剪出来。我已经编辑了上面的帖子。太好了!非常感谢。是否可以在两个箱线图之间增加一点距离?是的,您可以在geom_箱线图调用中使用position=position\u dodgewidth=1进行操作。非常好!非常感谢。是否可以在两个箱线图之间增加一点距离?是的,您可以在geom_箱线图调用中使用position=position\u dodgewidth=1。
ggplot(df, aes(x = Survival, y = Time, fill = Survival)) + 
  geom_boxplot() + facet_wrap(~WHO, nrow = 1) +
  theme(axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.title.x = element_blank(),
        legend.position = "bottom")