微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改geom_ribbon填充颜色

如何解决更改geom_ribbon填充颜色

我有一个混合效果线性模型,我想使用sjplot软件包对其进行绘制。 我为每条规则线的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)

我能做的最好的是:

enter image description here

解决方法

无论出于何种原因,在colors=中设置plot_model()都不适合我。这里的方法是使用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

enter image description here

只需添加scale_fill_sjplot()函数即可更改单独填充:

p + scale_fill_sjplot()

enter image description here

添加scale_color_sjplot()可以解决以下问题:

p + scale_fill_sjplot() + scale_color_sjplot()

enter image description here

奇怪的是,如果我们使用scale_*_manual()函数并提供sjplot_pal()作为values=的参考,我们会得到不同的颜色,但至少它们确实匹配:

p + scale_fill_manual(values=cols) + scale_color_manual(values=cols)

enter image description here

在不了解sjPlot软件包和plot_model()的情况下,我猜颜色的差异与软件包的级别和颜色分配有关,与默认情况下ggplot2的分配有所不同(可以按字母顺序排列,也可以基于levels()(如果有因素的话)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。