ggplot2: добавить p-значение к сгруппированным блочным графикам

Я пытаюсь добавить p_values ​​к моему графику, используя функцию "stat_signif".
Проблема в том, что мои диаграммы представляют собой сгруппированные диаграммы, где я хочу сравнить каждые 2 диаграммы одной и той же категории, а функция stat_signif требует значений по оси X. для сравнения.
Это мой код:

p <- ggplot(plot.data, aes(x = Element, y = Value, fill = Group)) + #Define the elements for plotting - group by "strandness".
geom_boxplot(outlier.shape = NA, colour = "black") +
scale_fill_manual(values = c("goldenrod","darkgreen")) +
coord_cartesian(ylim = c(0, 0.03)) +
stat_summary(fun.y=mean, colour="black", geom ="point", shape=18, size=4 ,show.legend = FALSE, position = position_dodge(0.75)) +
theme(legend.title=element_blank(),legend.text = element_text(size=16), axis.text.x = element_text(color = "black", size = 12), axis.text.y = element_text(color = "black", size = 12),
      panel.background = element_blank(),
      panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(),
      axis.line = element_line(colour = "black"),
      panel.border = element_rect(colour = "black", fill=NA, size=0.5),
      legend.key = element_rect(colour = "transparent", fill = "white")) +
theme(plot.title = element_text(lineheight=.8, hjust = 0.5, size = 20),axis.title.y = element_text(size = 20, angle = 90, margin = margin(t = 0, r = 20, b = 0, l = 0))) +
labs(x = "", y = paste0(dinuc, " frequency")) +
theme(plot.margin = unit(c(2,1,1,1), "cm")) +
#stat_compare_means(aes(group = group))
stat_signif(comparisons = list(c("Genes", "mRNA"))
            ,test = "wilcox.test", test.args = list(paired = FALSE, exact = FALSE, correct = FALSE,
                                                    map_signif_level = T), y_position = 0.02) 

Где кадр данных plot.data выглядит так:

  Group, Value, Element
1 Transcribed, 0.004814926, Genes
2 Non-transcribed, 0.008926, Genes
3 Transcribed, 0.086000026, mRNA
4 Non-transcribed, 0.00548, mRNA
5 Transcribed, 0.258400078, Exons
6 Non-transcribed, 0.23008457, Exons
7 Transcribed, 0.00005687, Introns
8 Non-transcribed, 0.890000521, Introns

и т. д. (для каждого элемента около 10000 строк)

Это цифра, полученная кодом: plot Когда я действительно хочу сравнить расшифрованные и нерасшифрованные диаграммы каждого элемента.


person Elizabeth    schedule 12.08.2018    source источник


Ответы (1)


Вы не опубликовали достаточно данных для получения p-значений, поэтому я публикую пример, который вы можете настроить для своего набора данных:

library(tidyverse)
library(ggpubr)

mtcars %>%
  mutate_at(vars(am, cyl), as.factor) %>%
  ggplot(aes(cyl, disp, fill=am))+
  geom_boxplot()+
  stat_compare_means(aes(group = am))

введите здесь описание изображения

Вы можете использоватьstat_compare_means(aes(group = am), label = "p.format"), если хотите, чтобы на вашем графике были только значения p.

person AntoniosK    schedule 12.08.2018
comment
Другой вопрос: в чем разница между stat_compare_means и stat_signif? - person Elizabeth; 12.08.2018
comment
Они будут давать одинаковые результаты, но они принадлежат разным пакетам, поэтому синтаксис у них разный. Также есть функция geom_signif из пакета ggsignif, которая производит что-то подобное. Все дело в том, какой из них вы склонны использовать и с которым знакомы. - person AntoniosK; 12.08.2018