分面modelplot中为不同模型设置不同颜色的技术问询
解决modelplot分面图中不同模型线条颜色设置问题
你尝试用scale_fill_brewer设置颜色无效,核心原因是分面模式下的modelplot,线条的颜色映射依赖color美学属性,而非fill。fill一般用于非分面模式下置信区间的填充色,对线条颜色不起作用。
解决方案
直接替换为针对color的标尺函数,比如scale_color_brewer(使用预定义调色板)或scale_color_manual(自定义颜色):
方法1:使用预定义调色板
library(modelsummary) library(ggplot2) url <- 'https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv' dat <- read.csv(url) # 单位转换 dat$bill_length_cm <- dat$bill_length_mm / 10 dat$flipper_length_cm <- dat$flipper_length_mm / 10 # 构建模型列表 models <- list( "Small model" = lm(bill_length_cm ~ flipper_length_cm, data = dat), "Medium model" = lm(bill_length_cm ~ flipper_length_cm + body_mass_g, data = dat), "Large model" = lm(bill_length_cm ~ flipper_length_cm + body_mass_g + species, data = dat)) # 设置线条颜色 modelplot(models, facet = TRUE) + scale_color_brewer(palette = "Set1", name = "模型")
方法2:自定义颜色
如果需要指定特定颜色,用scale_color_manual:
modelplot(models, facet = TRUE) + scale_color_manual( values = c("#E41A1C", "#377EB8", "#4DAF4A"), # 自定义颜色值 name = "模型" # 图例名称 )
原理说明
在分面的modelplot输出中,每个模型的回归系数点和置信区间线条,都是通过color属性与模型名称绑定的。因此只有针对color的标尺函数才能修改这些元素的颜色,fill属性在这里不生效。
内容的提问来源于stack exchange,提问作者robertspierre
相关产品推荐
相关产品推荐

