Я хотел сделать что-то вроде этого
Добавить несколько сравнений, используя ggsignif или ggpubr для подгрупп без меток на оси x
Я получил это далеко:
Пакеты и данные примеров
library(tidyverse)
library(ggpubr)
library(ggpol)
library(ggsignif)
example.df <- data.frame(species = sample(c("primate", "non-primate"), 50, replace = TRUE),
treated = sample(c("Yes", "No"), 50, replace = TRUE),
gender = sample(c("male", "female"), 50, replace = TRUE),
var1 = rnorm(50, 100, 5))
Уровни
example.df$species <- factor(example.df$species,
levels = c("primate", "non-primate"), labels = c("p", "np"))
example.df$treated <- factor(example.df$treated,
levels = c("No", "Yes"), labels = c("N","Y"))
example.df$gender <- factor(example.df$gender,
levels = c("male", "female"), labels = c("M", "F"))
Так как мне не повезло заставить ggsignif
или ggpubr
работать с размещением значимогогруппы правильно, когда группы, на которые они должны ссылаться, не имеют явного имени на оси x (так как они являются подгруппами каждой переменной на оси x и указаны только в легенде заполнения, а не на оси x, я попробовал этовместо этого.
example.df %>%
unite(groups, species, treated, remove = F, sep= "\n") %>%
{ggplot(., aes(groups, var1, fill= treated)) +
geom_boxjitter() +
facet_wrap(~ gender, scales = "free") +
ggsignif::geom_signif(comparisons = combn(sort(unique(.$groups)), 2, simplify = F),
step_increase = 0.1)}
Я понял,
Граненый график со значениями значимости, рассчитанными для каждой группы ![Faceted plot with significance values computed for every group](https://i.stack.imgur.com/l5tvI.png)
Однако порядокОбъединенные группы на оси X не так, как я хочу. Я хочу заказать это с p / N, np / N, p / Y, np / Y для каждого аспекта.
Как мне сделатьэто? Любая помощь с благодарностью.
Редактировать : Создание новой переменной с помощью mutaи сделать его упорядоченным фактором с моим предпочтительным порядком построения графиков.
example.df %>%
unite(groups, species, treated, remove = F, sep= "\n") %>%
mutate(groups2 = factor(groups, levels = c("p\nN", "np\nN", "p\nY", "np\nY"),
ordered = TRUE)) %>%
{ggplot(., aes(groups2, var1, fill= treated)) +
geom_boxjitter() +
facet_wrap(~gender,scales = "free") +
ggsignif::geom_signif(comparisons = combn(sort(unique(.$groups2)), 2, simplify = F),
step_increase = 0.1)}
Но я все еще ищу решения о том, чтобы вообще не использовать unite
и сохранять исходные факторы, и все еще получать значения значимости для построения с использованием ggsignif
или ggpubr
.