【问题标题】:Changing a geom_ribbon fill color更改 geom_ribbon 填充颜色
【发布时间】:2020-09-17 15:12:25
【问题描述】:

我有一个混合效应线性模型,我想使用 sjPlot 包来绘制它。 我为每条 reg 行的 CI 添加了一个 geom-ribbon 层,但我只是不知道如何更改它的填充颜色。理想情况下,我希望每条色带都与它的 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)

我能做的最好的就是:

【问题讨论】:

    标签: r ggplot2 sjplot


    【解决方案1】:

    无论出于何种原因,在plot_model() 中设置colors= 对我来说也无法正常工作。这里的方法是设置颜色值,就像使用 scale_color_sjplot()scale_color_manual(values=sjplot_pal()) 设置填充值一样。

    奇怪的是,这两种方法都有效(匹配颜色和填充美学),但给你不同的实际颜色。我不知道为什么,但这是如何匹配颜色和填充。我正在使用来自vignettes on the sjplot site 的示例数据集。

    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(),如果你有一个因素)。

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 2021-12-24
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      相关资源
      最近更新 更多