代码之家  ›  专栏  ›  技术社区  ›  LucaS

为EMMIP/GGPLOT预测图使用变量标签?

  •  1
  • LucaS  · 技术社区  · 8 年前

    我使用emmeans包和emmip函数来绘制clmm对象的预测概率。据我所知,emmip在幕后使用ggplot。我试图在几个预测者的水平上绘制预测图。这只是一个表面上的问题,但是否可以通过某种方式将绘图中的变量名设置(或重写)为更可读的标签值?

    我找到了一种使用sjlabeld包添加变量标签的方法,类似于base r中已经实现的向变量级别添加标签的方法:

    library(sjlabelled)
    dat$language_oth_home <- set_label(dat$language_oth_home, label = "Other Language at Home") 
    

    但埃米普不承认。

    我想尝试使用正确的标签自动绘制的一个示例图是:

    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"))
    

    最好是自动显示“治疗组:对照”,而不是现在的“随机化组:对照”。

    我看到的唯一选择是手动更改图像编辑应用程序post hoc中的文本(这将非常耗时),或者更改数据帧中的实际变量名(这也不理想,因为这会破坏很多代码)。

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  2
  •   Peter Ellis    8 年前

    一种方法是将调用添加到 facet_wrap 你自己,有一个定制的贴标机。现在,一个电话 小面包 隐藏在 emmip 但是你可以添加一个新的并覆盖它。你只需要确保你有正确的变量。

    下面是一个用我自己的文本替换默认facet标签(“side:l”和“side: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)
    

    enter image description here