使用离散轴注释ggplot(具有可重复的示例)

ant*_*den 5 r ggplot2

我正在努力找到一个简单的解决方案来修复我的情节.问题源于x轴的离散性质.我想用文本和段来注释绘图,以显示统计结果.

1)我想在"Baby"和"Queen"之间以及"Queen"和"Worker"之间打印p值,但ggplot只允许在每个标签上方注释,而不是在它们之间.

2)同样,我希望前两个geom_segments是分开的,但ggplot不会让我以"Queen"-0.1之类的方式结束第一个,并在"Queen"+0.1开始第二个,因为它是混合因子和数字.

有问题的情节

完全可重复的示例如下,第12,13和18行有问题:

data <- data.frame(Group.1 = rep(c("A","B"),3),Group.2 = c("Baby","Baby","Worker","Worker","Queen","Queen"),
                       value = c(0.18,0.30,0.09,0.25,-0.26,-0.55))

boxplot_candidates <- ggplot(aes(y=value,x=Group.2,fill=Group.2),data= data) + theme_bw() +
      scale_fill_manual(values=c("lightgreen","darkgreen","goldenrod1"),name="") +
      theme(plot.title = element_text(face="bold", size=18, hjust=0)) +
      labs(x="",y="Transcript expression\n(log2-centered TMM-nornalised TPMs)") +
      theme(plot.title=element_text(size=18, vjust=2),legend.position="", legend.text=element_text(size=14),
            axis.text.x = element_text(size = 14, colour = "black"),
            axis.text.y = element_text(size = 14, colour = "black"),
            axis.title.y=element_text(size = 14, colour = "black",vjust=1),
            axis.title.x=element_text(size = 14, colour = "black")) +
      geom_segment(aes(x="Baby",xend="Queen",y=0.7,yend=0.7)) + ##### MAKE XEND SMALLER
      geom_segment(aes(x="Queen",xend="Worker",y=0.7,yend=0.7)) + ##### MAKE XEND LARGER
      geom_segment(aes(x="Baby",xend="Worker",y=1.2,yend=1.2)) +
      ylim(-1.5,1.5) + stat_boxplot(geom ='errorbar') +
      geom_boxplot(notch=F,outlier.shape=NA) +
      geom_point(size=2,position = position_jitter(width = 0.2)) + stat_summary(fun.y=mean, colour = "white",geom="point", size=4) +
      annotate("text", x = as.factor(unique(data$Group.2)),y=c(0.8,0.8,1.3),
               label = c("p < 0.001","p < 0.001","p = 0.89"),family="",fontface = 3,size=4) ##### PRINT "p < 0.001" BETWEEN LABELS

print(boxplot_candidates)
Run Code Online (Sandbox Code Playgroud)

Cla*_*lke 11

分类变量只是放置在位置1,2,3等处.如果要到达两个分类变量之间的位置,可以使用坐标,如1.2或1.5等.

这是一个可重现的示例,其中删除了所有不相关的主题代码:

data <- data.frame(Group.1 = rep(c("A", "B"), 3),
                   Group.2 = c("Baby", "Baby", "Worker", "Worker", "Queen", "Queen"),
                   value = c(0.18, 0.30, 0.09, 0.25, -0.26, -0.55))

ggplot(data, aes(y = value, x = Group.2, fill = Group.2)) +
  stat_boxplot(geom = 'errorbar') +
  geom_boxplot(notch = F, outlier.shape = NA) +
  geom_segment(aes(x=1.1, xend=1.9, y=0.7, yend=0.7)) + 
  geom_segment(aes(x=2.1, xend=2.9, y=0.7, yend=0.7)) + 
  geom_segment(aes(x=1.1, xend=2.9, y=1.2, yend=1.2)) +
  geom_point(size = 2, position = position_jitter(width = 0.2)) + 
  stat_summary(fun.y = mean, colour = "white", geom = "point", size = 4) +
  annotate("text",
           x = c(1.5, 2.5, 2),
           y = c(0.8, 0.8, 1.3),
           label = c("p < 0.001", "p < 0.001", "p = 0.89"),
           family = "", fontface = 3, size=4) + 
  scale_fill_manual(values=c("lightgreen", "darkgreen", "goldenrod1"),
                    guide = "none") +
  ylim(-1.5, 1.5) +
  labs(x="", y="Transcript expression\n(log2-centered TMM-nornalised TPMs)") +
  theme_bw()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述