箱线图中的单独子组

Seperate subgroups in boxplot

我使用箱线图可视化了一些数据。每个变量都属于一个子组,我想 separate/indicate 在箱线图中的这些子组上。要么在每个 'group of variables' 之间创建一个小间隙,要么以某种方式在属于 without 的不同变量上指示使用 fill = type .下面我生成了一些可以用作示例数据的数据。

require(tidyverse)

set.seed(1234)
value <- sample(20:80, 1000, replace = T)
group <- sample(c("A1", "A2", "B1", "B2", "C1", "C2"), 1000, TRUE)

df <- as.data.frame(cbind(value, group))

df <- df %>%
  mutate(value = as.numeric(value),
         type = ifelse(grepl("*2", group),"Group 2", "Group1"),
         ) 

ggplot(df, aes(x=value, y =group))+
  geom_boxplot() +
  xlim(0, 100)

这给出了以下箱线图:

我尝试通过添加 facet_wrap(~type, dir="v") 对图进行分组,生成以下图:

但是,我不知道如何删除空变量(例如在第 2 组中:A1、B2、C3)。

有谁知道如何在不使用 fill = type 的情况下以适当的方式(使用 facet_wrap() 或不使用)在箱线图中指示变量子组?

您可以使用 scales = "free":

删除未使用的因子水平
library(dplyr)
library(ggplot2)

set.seed(1234)
value <- sample(20:80, 1000, replace = T)
group <- sample(c("A1", "A2", "B1", "B2", "C1", "C2"), 1000, TRUE)

df <- as.data.frame(cbind(value, group))

df <- df %>%
  mutate(value = as.numeric(value),
         type = ifelse(grepl("*2", group),"Group 2", "Group1"),
  ) 

ggplot(df, aes(x=value, y =group))+
  geom_boxplot() +
  xlim(0, 100) +
  facet_wrap(~type, dir="v", scales = "free")

reprex package (v0.3.0)

于 2020-09-11 创建