#r #facet-grid
#r #фасет-сетка
Вопрос:
Я хочу использовать facet_grid с stat_compare_means и иметь индивидуальные шкалы для y. Я думал, что scale = «free» позаботится об этом, но это не так. Уровень «B» в коэффициенте моего имени не масштабируется должным образом.
library(tidyverse)
library(ggpubr)
set.seed(2)
my_comparisons <- list(c("Cond1","Cond2"),
c("Cond2","Cond3"),
c("Cond1","Cond3"))
nrName <- 4
nrCond <- 3
nrValue <- 5
Name <- rep(c("A","B","C","D"),each=nrValue*nrCond)
Condition <- rep(c("Cond1","Cond2","Cond3"),length.out=nrName*nrCond*nrValue)
Score <- c(rnorm(nrValue*nrCond,6,1),rnorm(nrValue*nrCond,0.01,0.01),rnorm(nrValue*nrCond,7,1),rnorm(nrValue*nrCond,7,1))
df <- data.frame(Name = Name, Condition = Condition, Score = Score)
plt <- ggplot(df,
aes(x= Condition,y= Score, fill= Condition))
#geom_flat_violin(position = position_nudge(x = .2),adjust = 2)
geom_point(position = position_jitter(width = .15), size = .25)
geom_boxplot(outlier.shape = NA, alpha = 0.3, width = .1, colour = "BLACK")
facet_grid(reformulate("Name","."),scales = 'free')
scale_y_continuous(expand = expansion(mult = c(0, 0.1)))
stat_compare_means(
comparisons = my_comparisons,
method = "t.test",paired = TRUE,
label.y.npc = 0.1)
print(plt)
Я подумал, что это может быть связано с метками в stat_compare_means . Но удаление stat_compare_means дает аналогичный результат.
Что я здесь не рассматриваю?
Теперь я понимаю свое замешательство. Как правильно указал Ронакшах, я использую geom_flat_violin из PupillometryR в своем исходном коде. Я хотел упростить проблему, когда писал сообщение здесь, и именно по этой причине я показал графики. Если я добавлю строку с geom_flat_vioilin обратно и использую greom_wrap, как предложил Сурен, опция scale = «свободно» больше не работает.
ggplot(df,
aes(x= Condition,y= Score,fill= Condition))
geom_flat_violin(position = position_nudge(x = .2))
geom_point(position = position_jitter(width = .15), size = .25)
geom_boxplot(outlier.shape = NA, alpha = 0.3, width = .1, colour = "BLACK")
facet_wrap(reformulate("Name","."),scales = 'free',nrow = 1)
scale_y_continuous(expand = expansion(mult = c(0, 0.1)))
Я думаю, мне нужно проверить функцию geom_flat_violin для дальнейшей отладки.
Комментарии:
1. Возможно, вы захотите рассмотреть facet_wrap; см. github.com/tidyverse/ggplot2/issues/1152
2.
geom_flat_violin
Из какого пакета?3. @RonakShah Извините, я забыл удалить эти строки. Графики создаются без geom_flat_violin.
4. Очень вероятно, что в противном случае проблема с
geom_flat_violin
—facet_wrap
работает нормально.
Ответ №1:
Вместо facet_grid
того, чтобы использовать facet_wrap
, например,
facet_wrap(reformulate("Name","."), scales = 'free', nrow = 1)
С facet_grid
помощью one невозможно получить бесплатные шкалы x и y; смотрите Здесь https://github.com/tidyverse/ggplot2/issues/1152
Комментарии:
1. Да, ты прав, Сурен. Я отредактировал свой пост, чтобы прояснить проблему. Я хотел бы использовать функцию geom_flat_violin из PupillometryR, но, похоже, это не работает со свободными масштабами.
2. Я думаю, что ответ на вашу проблему с приведенным
facet_grid
выше. Существует также другая проблема,PupillometryR::geom_flat_violin
которая делает вывод довольно нежелательным.