如何在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
相关产品推荐
相关产品推荐

