Изменение условных эффектов эстетики типа линий - PullRequest
0 голосов
/ 08 мая 2020

Я запустил модель brms с двумя непрерывными предикторами и пытаюсь изобразить эффект. В частности, я хочу настроить тип линии предсказателя, чтобы сделать его безопасным для фотокопирования. объяснил, как изменить цвет линии и цвет ленты, но я хочу изменить тип линий, используя, например, scale_linetype_manual.

Я использую воспроизводимый пример, также используемый в этом топе c :

data(mtcars)
mtcars$carb<- as.ordered(mtcars$carb)
model<-brm(carb~hp, data=mtcars, family=sratio)

#creating conditional effects object
c_eff <- conditional_effects(model, categorical = T)

#creating plot
ugly_plot <- plot(c_eff, plot = FALSE)[[1]] + 
scale_linetype_manual(values = c("1"= "solid", 
                             "2"= "dashed", 
                             "3"= "dotted",
                             "4" = "twodash",
                             "5" = "dotdash",
                             "6" = "longdash")) +
scale_fill_manual(values = c("1"= "green", 
                             "2"= "#7570b3", 
                             "3"= "#1b9e77",
                             "4" = "grey20",
                             "5" = "blue",
                             "6" = "grey80")) +
scale_color_manual(values = c("1"= "black", 
                      "2"= "black", 
                      "3"= "orange",
                      "4" = "grey20",
                      "5" = "blue",
                       "6" = "grey80"))
ugly_plot 

1 Ответ

0 голосов
/ 08 мая 2020

Я нашел простое, но элегантное решение этой проблемы, преобразовав список, созданный с помощью conditional_effects, в фрейм данных

data(mtcars)
mtcars$carb<- as.ordered(mtcars$carb)
model<-brm(carb~hp, data=mtcars, family=sratio)

#creating conditional effects object
c_eff <- conditional_effects(model, categorical = T)

#converting the effect of interest into a dataframe
df <- as.data.frame(c_eff$`hp`)

#creating plot
ggplot(df,aes(x=hp,y=estimate__, group=cats__))+
  geom_ribbon(aes(ymin=lower__, ymax=upper__, fill = cats__), alpha=0.2)+
  geom_line(size=1, position=position_dodge(0.05), aes(color=cats__, linetype=cats__))+
  scale_linetype_manual(name = "carb",
                        values = c("1"= "solid", 
                                   "2"= "dashed", 
                                   "3"= "dotted",
                                   "4" = "twodash",
                                   "5" = "dotdash",
                                   "6" = "longdash")) +
  scale_fill_manual(name = "carb",
                    values = c("1"= "green", 
                               "2"= "#7570b3", 
                               "3"= "#1b9e77",
                               "4" = "grey20",
                               "5" = "blue",
                               "6" = "grey80")) +
  scale_color_manual(name = "carb",
                     values = c("1"= "black", 
                                "2"= "black", 
                                "3"= "orange",
                                "4" = "grey20",
                                "5" = "blue",
                                "6" = "grey80"))+
  labs(y="Probability",x="hp")

, в результате получился следующий график: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...