繁体   English   中英

ggplot2 box_plot 添加观察次数

[英]ggplot2 box_plot add number of observations

我有这个问题应该是微不足道的,但到目前为止我看到的例子都没有帮助。 我在 R 中有这个融化的 dataframe,我想用 geom_points 做一个 box_plot。 到目前为止,代码有效。

 head(df3)
  microRNAs        variable     value
1 geneA      LC1_average_TPM   520075.23
2 geneB      LC1_average_TPM   315802.96
3 geneC      LC1_average_TPM   13356.56
4 geneD      LC1_average_TPM   13348.82
5 geneE      LC1_average_TPM   13331.13
6 geneF      LC1_average_TPM   13309.27

ggplot(df3, aes(x=variable, y=log(value), fill=variable)) +
    geom_boxplot(aes(fill = variable))+
    geom_point(shape = 21, alpha = 0.9, position=position_jitterdodge(jitter.width = 3, jitter.height = 0)) +
    scale_fill_brewer(palette = "Spectral") +   scale_y_continuous(limits=c(0,15), breaks=seq(0,15,1)) + theme(axis.text.x=element_blank()) + ylab("log2(Expression TPM)") +  xlab ("Libraries")

在此处输入图像描述

我的问题是我想向 plot 添加观察结果。 观察结果取决于每个 df3$variable 获得的数据点数。

有人可以帮忙吗?

如果您使用 mutate,正如我的评论所建议的那样,它是可行的,但是您会重复获得多个 n 值,您需要使用summarsie并创建一个单独的表。 您将使用data参数将其添加到geom_text()调用中。 我将您的data.frame命名为“df”,但在您的情况下调整为df3

counts_df <- 
df %>%   
  group_by(variable) %>% 
  summarise(group_n = length(variable)) 
  
df %>% 
  ggplot(aes(x=variable, y=log(value), fill=variable)) +
  geom_boxplot(aes(fill = variable))+
# this is what you want to add < ----  
  geom_text(
    data = counts_df,
    aes(variable, y=10,
                label=group_n))+
  geom_point(shape = 21, alpha = 0.9, position=position_jitterdodge(jitter.width = 3, jitter.height = 0)) +
  scale_fill_brewer(palette = "Spectral") +
  scale_y_continuous(limits=c(0,15), breaks=seq(0,15,1)) +
  theme(axis.text.x=element_blank()) +
  ylab("log2(Expression TPM)") +
  xlab ("Libraries")

这会产生这个可怕的 plot,使用y参数为n调整美学和 position。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM