You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为brms模型conditional_effects生成的图表自定义颜色?

brms模型条件效应图的因子分组颜色设置

问题场景

我用brms拟合模型,X(变量名segment)是包含5个水平的因子变量,其中1、3、5属于同一条件,2、4属于另一条件;Y是实验测得的连续型因变量。使用conditional_effects()绘制X的估计效应图时,所有元素(均值点、标准差条)均为黑色。我尝试用以下代码设置分组颜色,但没有效果:

segmentEffect <- conditional_effects(model,effect = "segment")
myPlot <- plot(segmentEffect,plot=FALSE)[[1]] +
scale_fill_manual(values = c("1" = "cyan",
                             "2" = "pink",
                             "3" = "cyan",
                             "4" = "pink",
                             "5" = "cyan"))+
scale_colour_manual(values = c("1" = "cyan",
                               "2" = "pink",
                               "3" = "cyan",
                               "4" = "pink",
                               "5" = "cyan"))
myPlot

解决方案

方法1:直接绑定因子水平与颜色映射

原来的代码失效是因为绘图对象没有将颜色/填充美学与segment变量绑定,需先通过aes()指定映射关系,再设置颜色:

segmentEffect <- conditional_effects(model, effect = "segment")
myPlot <- plot(segmentEffect, plot=FALSE)[[1]] +
  # 将颜色、填充与segment变量绑定
  aes(colour = segment, fill = segment) +
  scale_fill_manual(values = c("1" = "cyan", "2" = "pink", "3" = "cyan", "4" = "pink", "5" = "cyan")) +
  scale_colour_manual(values = c("1" = "cyan", "2" = "pink", "3" = "cyan", "4" = "pink", "5" = "cyan"))
myPlot

方法2:创建分组变量简化设置(推荐)

如果需要复用分组逻辑,先给数据集添加分组变量,再基于分组设置颜色,更简洁清晰:

  1. 给原始数据集添加分组列:
# 假设数据集名为data,X变量为segment
data$cond_group <- factor(ifelse(data$segment %in% c(1,3,5), "条件A", "条件B"))
  1. 绘图时绑定分组变量与颜色:
segmentEffect <- conditional_effects(model, effect = "segment")
myPlot <- plot(segmentEffect, plot=FALSE)[[1]] +
  aes(colour = cond_group, fill = cond_group) +
  scale_fill_manual(values = c("条件A" = "cyan", "条件B" = "pink")) +
  scale_colour_manual(values = c("条件A" = "cyan", "条件B" = "pink"))
myPlot

失效原因说明

conditional_effects()默认生成的ggplot对象中,点和误差线的颜色是固定值(默认黑色),并未将colour或fill美学与segment变量建立映射关系。因此直接添加颜色比例尺不会生效,必须先通过aes()指定变量与美学的绑定。

内容的提问来源于stack exchange,提问作者SimonBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:06:35