#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()
, если у вас есть фактор).