2017-12-15 4 views
1

Ich habe das folgende Diagramm mit ggplot2 und ggpubr erstellt. Ich möchte Signifikanz zwischen VaD + und HC angeben. Ich möchte die p-Werte in Sternchen ändern. Ich denke, ich sollte symnum.args verwenden, aber wenn ich es versuche, bekomme ich keine Veränderung.Signifikante Signifikanz mit ggplot2, in einem Boxplot mit mehreren Gruppen

myplot <- ggplot(my.data, aes(x = DX, y = CC, fill=DX)) + geom_boxplot() + ggtitle("Corpus Collasum") + theme(text=element_text(size = 16), panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"), plot.title = element_text(lineheight=.8, face="bold", hjust=0.5)) + scale_y_continuous(name = bquote('Volume in'~mm^3)) + scale_x_discrete(name = "Diagnosis", labels = c("AD","HC","VaD-","VaD+")) + scale_fill_brewer(palette="OrRd", name="Diagnosis", labels=c("AD","HC","VaD-","VaD+")) + geom_jitter(width = 0) 
cmpr <- list(c("VaDD","HC"), c("AD","VaDD")) 
myplot + stat_compare_means(comparisons = cmpr, tip.length=0.01, symnum <- list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("****", "***", "**", "*", "ns"))) 

Grundsätzlich möchte ich die numerischen p-Werte durch das Symbol ersetzen.

Here sind die Daten.

this plot

+0

0,31 So wie ‚*‘ und 0,0051, wie gezeigt werden würde ‚***‘? – Heikki

+0

Nicht wirklich vertraut mit ggpubr, aber mit Blick auf einige Beispiele vielleicht 'label = "p.signif" 'ist was Sie brauchen? – dww

Antwort

2

Die oben @dww gegebene Lösung (verwenden label = "p.signif") ist die richtige:

cmpr <- list(c("VaD+","HC"), c("AD","HC")) 
myplot + stat_compare_means(comparisons = cmpr, tip.length=0.01, 
     label = "p.signif", 
     symnum.args = list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), 
     symbols = c("****", "***", "**", "*", "ns"))) 

enter image description here

EDIT: Ich stat_compare_means geändert, da diese Funktion zu ignorieren scheint symnum.args:

my_stat_compare_means <- function (mapping = NULL, data = NULL, method = NULL, paired = FALSE, 
    method.args = list(), ref.group = NULL, comparisons = NULL, 
    hide.ns = FALSE, label.sep = ", ", label = NULL, label.x.npc = "left", 
    label.y.npc = "top", label.x = NULL, label.y = NULL, tip.length = 0.03, 
    symnum.args = list(), geom = "text", position = "identity", 
    na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...) 
{ 
    if (!is.null(comparisons)) { 
     method.info <- ggpubr:::.method_info(method) 
     method <- method.info$method 
     method.args <- ggpubr:::.add_item(method.args, paired = paired) 
     if (method == "wilcox.test") 
      method.args$exact <- FALSE 
     pms <- list(...) 
     size <- ifelse(is.null(pms$size), 0.3, pms$size) 
     color <- ifelse(is.null(pms$color), "black", pms$color) 
     map_signif_level <- FALSE 
     if (is.null(label)) 
      label <- "p.format" 
     if (ggpubr:::.is_p.signif_in_mapping(mapping) | (label %in% "p.signif")) { 
      if (ggpubr:::.is_empty(symnum.args)) { 
       map_signif_level <- c(`****` = 1e-04, `***` = 0.001, 
        `**` = 0.01, `*` = 0.05, ns = 1) 
      } else { 
       map_signif_level <- symnum.args 
      } 
      if (hide.ns) 
       names(map_signif_level)[5] <- " " 
     } 
     step_increase <- ifelse(is.null(label.y), 0.12, 0) 
     ggsignif::geom_signif(comparisons = comparisons, y_position = label.y, 
      test = method, test.args = method.args, step_increase = step_increase, 
      size = size, color = color, map_signif_level = map_signif_level, 
      tip_length = tip.length, data = data) 
    } else { 
     mapping <- ggpubr:::.update_mapping(mapping, label) 
     layer(stat = StatCompareMeans, data = data, mapping = mapping, 
      geom = geom, position = position, show.legend = show.legend, 
      inherit.aes = inherit.aes, params = list(label.x.npc = label.x.npc, 
       label.y.npc = label.y.npc, label.x = label.x, 
       label.y = label.y, label.sep = label.sep, method = method, 
       method.args = method.args, paired = paired, ref.group = ref.group, 
       symnum.args = symnum.args, hide.ns = hide.ns, 
       na.rm = na.rm, ...)) 
    } 
} 

symnum.args <- c("**"=0.0025,"*"=0.05,ns=1) 
myplot + my_stat_compare_means(comparisons = cmpr, tip.length=0.01, 
      label = "p.signif", symnum.args = symnum.args) 

enter image description here

+0

Ich dachte, das funktioniert, aber es scheint nicht zu sein. Wenn ich das Argument symnum.args in compare_means() verwende, spiegelt die Tabelle die neuen Cutoff-Punkte so wieder, wie ich sie haben möchte. Aber wenn ich die gleichen Dinge in stat_compare_means() verwende, scheinen die Beschriftungen unverändert zu sein. –

+0

'myplot + stat_compare_means (Vergleiche = cmpr, tip.length = 0.01, label =" p.signif ", p.adjust.method =" bonferroni ", symnum.args <- Liste (cutpoints = c (0, 0.0025, 0.05 , 1), symbols = c ("**", "*", "ns"))) 'ergibt den AD - VaD + -Vergleich mit drei Sternchen darüber, was nicht das Symnum-Argument widerspiegelt. –

+0

aktualisierte Frage –

Verwandte Themen