Как я могу добавить несколько значений в ggplot сгруппированных boxplot - PullRequest
0 голосов
/ 11 января 2019

У меня есть boxplot, и я хотел бы добавить pvalues ​​для 4 сравнений по двум факторам.

Вот набор данных:

dput(CauloQ_datMannot)
structure(list(V1 = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L, 
3L, 4L, 4L, 4L), .Label = c("B", "BF", "BFi ", "Bi"), 
class = "factor"), 
variable = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 
1L, 2L, 3L), .Label = c("V2", "V3", "V4"), class = "factor"), 
value = c(0.00051, 0.00055, 0.00056, 0.00074, 0.00079, 0.00083, 
0.00093, 0.00082, 0.00073, 0.0011, 0.00113, 0.00098), 
Location = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "Root", class = "factor"), 
Bean = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), .Label = "Bean", class = "factor"), Fungi = structure(c(2L, 
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L), .Label = c("M+", 
"M-"), class = "factor"), Insect = structure(c(2L, 2L, 2L, 
2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Insect", 
"NI"), class = "factor")), .Names = c("V1", "variable", "value", 
"Location", "Bean", "Fungi", "Insect"), row.names = c(NA, -12L
), class = "data.frame")

Вот мой текущий график:

ggplot(CauloQ_datMannot,aes(x=Insect,y=value,fill=Fungi))+geom_boxplot()+
  guides(fill=guide_legend("Metarhizium")) +
  ggtitle("Caulobacter qPCR")+
  scale_x_discrete(labels= c("I+","I-","soil alone"))+
  theme(plot.title = element_text(size = 18, face = "bold"))+
  theme(axis.text=element_text(size=14),
        axis.title=element_text(size=14)) + 
  theme(legend.text=element_text(size=14),
        legend.title=element_text(size=14)) +
  theme(strip.text.x = element_text(size = 14))

Я установил ggpubr и ознакомился с Compare_stat_means, но не могу понять, как проводить сравнения с двумя факторами. То есть я хочу 4 значения

M + / I + против M- / I +, и M + / I- против M- / I-, и I + / M + против I- / M +, и I + / M- против I- / M-

Любая помощь приветствуется. спасибо

> Отлично. Теперь, благодаря Джимбоу, у меня есть следующий сюжет.

 d %>%    unite(groups, Insect, Fungi, remove = F) %>%   
 {ggplot(.,aes(groups, value, fill= Fungi)) + 
       geom_boxplot() +    #    ggbeeswarm::geom_beeswarm()+
       ggsignif::geom_signif(comparisons =  combn(sort(unique(.$groups)),2,  simplify = F),
                             step_increase = 0.1,test='t.test')}

enter image description here

Однако я бы хотел переупорядочить коробки, т.е. сначала со всеми I + (сначала M + в этом). Я попытался переупорядочить уровни, а затем вручную строки, которые не сработали.

Любая помощь приветствуется

d$Insect<-factor(d$Insect,levels(d$Insect)[c(2,1)])
d$Fungi<-factor(d$Fungi,levels(d$Fungi)[c(2,1)])

1 Ответ

0 голосов
/ 11 января 2019

Я рекомендую использовать четко определенные группы по оси X. Тогда вы можете попробовать

library(tidyverse)
library(ggsignif)
library(ggbeeswarm)
d %>% 
  unite(groups, Insect, Fungi, remove = F) %>% 
  {ggplot(.,aes(groups, value, fill= Fungi)) + 
   geom_boxplot() + 
   ggbeeswarm::geom_beeswarm()+
    ggsignif::geom_signif(comparisons =  combn(sort(unique(.$groups)), 2, simplify = F),
                          step_increase = 0.1)}

enter image description here

...