在 ggplot 中将沿 x 轴的空组添加到箱线图中

问题描述 投票:0回答:0

我们正在将两个数据集(蛋白质组和转录组)与匹配组进行比较,除了蛋白质组数据中缺失的一组。当我将图表绘制在彼此下方时,如果缺失的组在图中表示,它们将更容易比较。

为此,我需要找到一种方法在 ggplot 的箱线图中沿 x 轴绘制一个“空”组。我在这里或在线找不到一个很好的例子(尽管已经问过类似的问题)但我没有找到任何适合我的解决方案。

示例数据

我想创建它会有更简单的方法,但它确实有效。为新解决方案高兴!

library(tidyverse)

# expression dataframe
crete_exp_df <- function(gene_nr, sample_nr){
  df <- replicate(sample_nr, rnorm(gene_nr))
  df <- as.data.frame(df)
  colnames(df) <- paste("Sample", c(1:ncol(df)))
  rownames(df) <- paste("Gene", c(1:nrow(df)))
  return(df)
}

df1 <- crete_exp_df(5, 20)
df1$gene <- rownames(df1)

# sample annotation

san <- data.frame(
  id = colnames(df1),
  group = sample(1:4, 20, replace = TRUE))

# long exp4 box ----
df_long <- df1 %>% pivot_longer(!gene, names_to = "id", values_to = "value")
df_long$group <- as.factor(san$group[match(df_long$id, san$id)])

# plot
df_long %>%
  filter(gene == "Gene 1") %>%
  ggplot(aes(x = group, y = value)) +
  geom_boxplot()

预期结果

r ggplot2 boxplot
© www.soinside.com 2019 - 2024. All rights reserved.