ggplot2绘制lsmeans模型结果:事后检验字母不匹配问题求助
没问题,我来帮你搞定用ggplot2绘制LS均值可视化的需求——按照你说的,箱形代表LS均值、误差棒是95%置信区间,还要标注显著性分组字母。先基于你提供的cld.mixed.lme数据结构(虽然有点截断,我默认它包含LS均值、置信区间和分组字母这些关键列),给你一步步来:
1. 加载必备的R包
首先得把需要的工具包加载好,ggplot2用来绘图,emmeans如果需要重新生成CLD结果的话也得用上:
library(ggplot2) library(emmeans) # 若还未生成cld结果则需要
2. 预处理CLD数据
你的cld.mixed.lme里应该有hor(水平因子)、managem(管理方式因子)、lsmean(LS均值)、lower.CL(95%置信区间下限)、upper.CL(95%置信区间上限),还有标记显著性的分组字母列(通常默认是.group)。如果分组字母列有多余空格,先清理一下:
# 去除分组字母的多余空格,避免显示混乱 cld.mixed.lme$.group <- trimws(cld.mixed.lme$.group)
3. 用ggplot2绘制目标图形
这里按照你要求的,用箱形代表LS均值,加上误差棒和分组字母:
ggplot(cld.mixed.lme, aes(x = managem, y = lsmean, fill = hor)) + # 绘制代表LS均值的箱形(stat="identity"表示直接用现有数值,不用统计计算) geom_boxplot(stat = "identity", width = 0.7, position = position_dodge(0.8)) + # 添加95%置信区间的误差棒,和箱形错开避免重叠 geom_errorbar(aes(ymin = lower.CL, ymax = upper.CL), width = 0.2, position = position_dodge(0.8)) + # 添加显著性分组字母,放在误差棒上方 geom_text(aes(label = .group), vjust = -0.5, position = position_dodge(0.8), size = 4) + # 设置图形标题和坐标轴标签 labs(title = "LS均值及95%置信区间", x = "管理方式", y = "LS均值", fill = "水平因子") + # 用简洁的主题美化图形 theme_bw() + theme(plot.title = element_text(hjust = 0.5, size = 14, face = "bold"), axis.title = element_text(size = 12), legend.title = element_text(size = 12))
小提示:
- 如果你的分组字母列不是
.group,记得把代码里的.group替换成实际列名; - 如果你觉得用箱形展示单个LS均值有点奇怪(毕竟箱形通常展示分布),可以把
geom_boxplot换成geom_col(柱状图),更贴合单个均值的展示; - 调整
position_dodge的数值可以控制不同hor水平图形的错开距离,避免重叠。
内容的提问来源于stack exchange,提问作者BAlpine
相关产品推荐
相关产品推荐

