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

如何在R中拆分并修改多水平混合效应模型的Dotplot,仅保留斜率部分

解决方案

1. 只保留斜率的随机效应图

你之前的提取方法无效是因为dotplot()返回的是trellis对象,不能直接通过$g[1]提取子图。正确做法是先从随机效应结果中单独提取Paper组的斜率(即Dilution对应的随机效应),再单独绘制:

# 加载所需包
library(lme4)
library(lmerTest)
library(lattice)
library(RColorBrewer)

# 拟合模型(你的原有代码)
MEDE.fin <- lmer(Relative_Value ~ Dilution + (Dilution|Paper) + (1|Paper:DataSet), data=DE_data)

# 获取带条件方差的随机效应
re <- ranef(MEDE.fin, condVar = TRUE)

# 提取Paper组中仅Dilution(斜率)的随机效应,并保留条件方差属性
re_slope <- re$Paper[, "Dilution", drop = FALSE]
attr(re_slope, "postVar") <- attr(re$Paper, "postVar")[,, "Dilution"]

# 绘制仅含斜率的随机效应图
dotplot(re_slope, condVar = TRUE)

运行后就能得到只显示斜率随机效应的单张图,不会再出现截距部分。

2. 修改图的配色

dotplot()是lattice包的函数,你可以通过以下两种方式调整配色:

方式1:直接指定点和线的颜色

dotplot(re_slope, condVar = TRUE,
        col = "#E64B35",  # 设置点的颜色(示例为红色)
        col.line = "#3182BD"  # 设置误差线的颜色(示例为蓝色)
)

方式2:用RColorBrewer配色方案,结合par.settings调整整体样式

# 选择Brewer配色集中的颜色
my_cols <- brewer.pal(2, "Set2")

dotplot(re_slope, condVar = TRUE,
        par.settings = list(
          plot.symbol = list(col = my_cols[1], pch = 16),  # 点的颜色和形状
          plot.line = list(col = my_cols[2], lwd = 1)      # 误差线的颜色和粗细
        )
)

如果需要调整背景、坐标轴等其他元素,也可以在par.settings里添加对应的参数,比如axis.line、strip.background等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:32:48