Изменение цвета заливки geom_ribbon

#r #ggplot2 #sjplot

#r #ggplot2 #sjplot

Вопрос:

У меня есть линейная модель со смешанными эффектами, и я хочу построить ее с помощью пакета sjPlot. Я добавил слой geom-ribbon для CI каждой строки reg, но я просто не могу понять, как изменить его цвет заливки. В идеале я бы хотел, чтобы каждая лента была того же цвета, что и ее рег-строка.

Вот мой код для модели:

 model <- lme(no_stickers_gave_stranger ~ s_negativeAff*parent_model,
             data = table4, random = ~1|ifam)
  

И вот код для графика:

 plot_model(model = model, line.size = 0.71, type = "int",
           colors = sjplot_pal(palette = "metro"),
           axis.title = c("Negative Emotionality",
                          "Number of sticker shared with a stranger"),
           title = "Age 6 - LAB-TAB",
           legend.title = "Parent Model")  
  scale_fill_sjplot(palette = "metro", discrete = T)  
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), colour = NA, alpha = 0.25)
  

Лучшее, что я мог сделать, это:

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

Ответ №1:

По какой-то причине настройка colors= внутри plot_model() также не работала должным образом для меня. Здесь можно задать значения цвета так же, как вы устанавливаете значения заливки, используя либо scale_color_sjplot() или scale_color_manual(values=sjplot_pal()) .

Любопытно, что оба метода работают (для соответствия цвета и эстетики заливки), но дают разные фактические цвета. У меня нет ответа почему, но вот как подобрать цвет и заливку. Я использую пример набора данных из виньеток на сайте sjplot.

 library(sjPlot)
library(ggplot2)
data(efc)

fit <- lm(barthtot ~ c12hour   neg_c_7   c161sex   c172code, data = efc)
cols <- sjplot_pal(palette = "metro")

p <- plot_model(fit, type = "pred", terms = c("c161sex", "c12hour"))
p
  

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

Простое добавление scale_fill_sjplot() функции изменяет только заливку:

 p   scale_fill_sjplot()
  

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

Добавление scale_color_sjplot() исправлений, которые:

 p   scale_fill_sjplot()   scale_color_sjplot()
  

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

Как ни странно, если мы используем scale_*_manual() функции и указываем в sjplot_pal() качестве ссылки для values= , мы получаем разные цвета, но, по крайней мере, они совпадают:

 p   scale_fill_manual(values=cols)   scale_color_manual(values=cols)
  

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

Не зная больше о sjPlot пакете и plot_model() , я бы предположил, что разница в цвете связана с тем, что уровни и цвета пакета назначаются немного иначе, чем ggplot2 по умолчанию (в алфавитном порядке или на основе levels() , если у вас есть фактор).