如何调整LME模型随机效应绘图的标签尺寸或仅绘制部分图形?
解决方案
方法1:缩小y轴标签尺寸
ranef返回对象的plot()方法底层基于lattice绘图体系,可以通过传入scales参数调整y轴文本字号,直接替换原有绘图代码即可:
x <- ranef(Model, condVar=TRUE) # cex对应字号缩放比例,可根据实际显示效果调整数值 lattice::dotplot(x, scales = list(y = list(cex = 0.6)))
注:nlme包的lme模型生成的ranef对象也支持该参数调整
方法2:仅绘制部分随机效应层级
不需要展示全部分组时,可以先截取部分分组数据再绘图,比如仅展示前20个分组的随机效应:
x <- ranef(Model, condVar=TRUE) # 代码中的「分组变量名」替换为你模型中实际的随机效应分组字段名,1:20对应取前20个分组 x_sub <- x[["分组变量名"]][1:20, , drop=FALSE] # 保留条件方差属性用于绘制误差线 attr(x_sub, "postVar") <- attr(x[["分组变量名"]], "postVar")[,,1:20] # 绘制截取后的图 lattice::dotplot(x_sub)
方法3:转为数据框用ggplot2自定义绘图
需要更高的样式调整自由度时,可以提取随机效应数据后用ggplot2绘图,可自定义的维度更多:
library(ggplot2) library(broom.mixed) # 一键提取随机效应的点估计、置信区间数据 re_df <- tidy(Model, effects = "ran_vals", conf.int = TRUE) # 自定义绘图 ggplot(re_df, aes(x = estimate, y = level)) + geom_point() + geom_errorbarh(aes(xmin = conf.low, xmax = conf.high), height = 0.2) + theme(axis.text.y = element_text(size = 6)) # 按需调整y轴字号、颜色等样式
内容的提问来源于stack exchange,提问作者luckttt
相关产品推荐
相关产品推荐

