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

如何在R中将Tukey检验的显著结果以红色高亮绘制

高亮TukeyHSD图中显著差异的实现方法

我之前处理过类似的需求,其实实现思路很直观:先画出所有黑色的置信区间,再把那些显著差异(置信区间不包含0,对应p adj小于你的显著性水平)的区间用红色线条覆盖上去。下面是具体的步骤和代码:

完整实现代码

# 1. 运行Tukey检验并保存结果(和你原来的代码一致)
TUKEY <- TukeyHSD(myANOVA, conf.level = .90)

# 2. 先绘制所有黑色的置信区间
plot(TUKEY, las = 1, col = "black")

# 3. 提取显著的对比组:筛选p adj < 0.1(对应90%置信水平)的行
sig_comparisons <- subset(TUKEY[[1]], `p adj` < 0.1)

# 4. 获取显著组对应的y轴位置(和Tukey图的顺序一致)
all_y_positions <- 1:nrow(TUKEY[[1]])
sig_y_positions <- all_y_positions[which(TUKEY[[1]]$`p adj` < 0.1)]

# 5. 用红色粗线条覆盖显著的置信区间
segments(
  x0 = sig_comparisons$lwr, y0 = sig_y_positions,
  x1 = sig_comparisons$upr, y1 = sig_y_positions,
  col = "red", lwd = 2  # 加粗线条让红色更突出
)

# 可选:把显著组的标签也改成红色(增强可读性)
text(
  x = sig_comparisons$diff, y = sig_y_positions,
  labels = rownames(sig_comparisons),
  col = "red", pos = 4  # pos=4表示标签放在线段右侧
)

关键细节解释

  • 提取显著组:TUKEY[[1]]是Tukey检验结果中存储组间对比的数据框(如果是多因素ANOVA,你需要替换成对应的因子名称,比如TUKEY$Group),里面的p adj列是校正后的p值,我们筛选小于0.1的行(对应你设置的90%置信水平)。
  • y轴位置匹配:Tukey图的y轴顺序和TUKEY[[1]]的行顺序完全一致,所以用1:nrow(TUKEY[[1]])就能得到每个对比对应的y坐标。
  • 线条覆盖:segments()函数用来绘制线段,我们用它把显著的区间用红色粗线条画在原来的黑色线条上面,这样就能实现高亮效果。

如果你的置信水平是95%,只需要把代码中的conf.level = .90改成.95,同时把p adj < 0.1改成p adj < 0.05即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:07:29