我正在使用emmeans包和emmip函数来绘制来自clmm对象的预测概率。据我了解,emmip在后台使用ggplot。我正在尝试在几个预测变量的级别上绘制预测。这只是表面上的问题,但是否可以通过某种方式将图中的变量名设置(或覆盖)为更易读的标签值?
我找到了一种使用sjlabelled包添加变量标签的方法,类似于在R中已经实现的将标签添加到变量级别的方法:
library(sjlabelled)
dat$language_oth_home <- set_label(dat$language_oth_home, label = "Other Language at Home")
但是emmip无法识别它。
我想尝试使用正确标签自动进行绘制的示例情节是:
emmip(mmod_stundvis_fin_em, st_understand_vision_dev_2 ~ visit|language_oth_home|randomization_group) +
xlab("Visit (0 = Pre-, 1 = Post-)") +
ylab("Probability") +
scale_color_manual(name="Response Category",
labels=c("Strongly Agree", "Agree", "Disagree", "Strongly Disagree"),
values=c("#0371b1", "#91c6de", "#f4a682", "#c90120"))
最好自动显示“处理组:控件”,而不是现在显示的“ randomization_group:Control”。
我看到的唯一选择是在事后手动更改图像编辑应用程序中的文本(这将很耗时),或者更改数据框中的实际变量名(这也不理想,因为它会破坏很多代码)。
答案 0 :(得分:2)
一种方法是通过使用自定义标签添加您自己对facet_wrap
的呼叫。目前,在facet_wrap
的幕后隐藏了对emmip
的呼叫,但是您可以添加一个新呼叫并将其覆盖。您只需要确保您具有正确的变量即可。
这是一个用我自己的文本替换默认构面标签(“面:L”和“面:R”)的示例。
#--- Three-factor example
noise.lm = lm(noise ~ size * type * side, data = auto.noise)
my_labeller <- as_labeller(function(x){
return(paste0("Treatment group: ", x))
})
emmip(noise.lm, type ~ size | side) +
facet_wrap(~side, labeller = my_labeller)