Понимание масштаба facet_grid = «свободно»

#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 . Но удаление 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   geom_wrap

Я думаю, мне нужно проверить функцию 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 которая делает вывод довольно нежелательным.