ggplot中单侧t检验设置未生效,仍显示双侧结果的问题
问题原因与解决方案
- 核心问题:
stat_compare_means本身不直接接收alternative参数,这个参数是底层t.test函数的参数,必须通过method.args以列表形式传递给检验函数,直接作为顶层参数传入不会生效。 - 额外注意:你代码中的
fillColors和outlineColors未定义,需要补充颜色向量才能正常运行。
修改后的完整代码
library("ggplot2") library("dplyr") library("ggpubr") library("tibble") lesionData <- tribble( ~Tag, ~Group, ~Size, ~`Iba-1_signal_AVERAGE_INSIDE`, ~`Outside lesion`, ~`Iba-1_signal_TOTAL_INSIDE`, ~`Diet Duration`, ~Diet, 669, "ND_4wk", 14625.69, 31.02, 2.25, 471058.35, "4wk", "ND", 667, "ND_4wk", 6415.18, 35.22, 2.00, 444263.61, "4wk", "ND", 664, "ND_4wk", 2268.30, 32.76, 1.00, 146966.63, "4wk", "ND", 665, "ND_4wk", 4787.75, 33.22, 2.50, 318116.98, "4wk", "ND", 668, "ND_4wk", 10888.93, 34.72, 2.33, 499898.94, "4wk", "ND", 662, "ND_4wk", 9975.43, 29.12, 2.33, 390456.94, "4wk", "ND", 663, "ND_4wk", 6220.05, 29.78, 2.50, 280898.60, "4wk", "ND", 670, "ND_4wk", 12556.35, 34.76, 2.50, 929012.96, "4wk", "ND", 773, "WD_4wk", 16572.26, 30.42, 3.50, 1079815.52, "4wk", "WD", 772, "WD_4wk", 18703.73, 34.65, 2.00, 876939.8028, "4wk", "WD", 718, "WD_4wk", 15356.27, 27.37, 2.33, 560484.3131, "4wk", "WD", 719, "WD_4wk", 19512.66, 39.16, 1.50, 1739762.946, "4wk", "WD", 672, "WD_4wk", 23200.62, 33.29, 4.33, 1098322.795, "4wk", "WD", 407, "WD_4wk", 9100.30, 29.93, 2.50, 411408.0204, "4wk", "WD", 717, "WD_4wk", 7116.79, 39.24, 2.00, 388895.1669, "4wk", "WD", 671, "WD_4wk", 9588.02, 43.47, 2.67, 545080.2545, "4wk", "WD", 398, "MED_4wk", 1037.99, 23.45, 2.00, 97363.46, "4wk", "MED", 293, "MED_4wk", 12098.67, 28.11, 3.33, 451370.56, "4wk", "MED", 771, "MED_4wk", 3671.89, 26.85, 0.00, 186313.68, "4wk", "MED", 295, "MED_4wk", 569.90, 31.71, 1.00, 72274.08, "4wk", "MED", 575, "MED_4wk", 3016.31, 26.06, 1.00, 163485.36, "4wk", "MED", 299, "MED_4wk", 6915.73, 28.70, 3.67, 180444.29, "4wk", "MED", 772, "MED_4wk", 8006.26, 31.75, 1.00, 342484.84, "4wk", "MED", 574, "MED_4wk", 3689.12, 29.21, 2.33, 144763.88, "4wk", "MED" ) # Define group comparisons for t-tests comparisons <- list( c("ND_4wk", "WD_4wk"), c("ND_4wk", "MED_4wk"), c("WD_4wk", "MED_4wk")) # 补充缺失的颜色向量 fillColors <- c("#619CFF", "#F8766D", "#00BA38") outlineColors <- c("#003B73", "#7C260B", "#005728") # Create plot week_filtered <- filter(lesionData, `Diet Duration` == "4wk") plot <- ggplot(week_filtered, aes(x = Group, y = Size, fill = Group, color = Group)) + stat_summary(fun = mean, geom = "bar", size = 1, show.legend = FALSE, width = 0.5) + # 关键修改:将alternative参数放入method.args传递给t.test stat_compare_means(comparisons = comparisons, method = "t.test", step_increase = 0.5, label = "p.format", method.args = list(alternative = "less")) + theme_minimal() + scale_fill_manual(values = fillColors) + scale_color_manual(values = outlineColors) print(plot)
补充说明
- 如果需要针对不同组比较设置不同的单侧检验方向(如部分用
less,部分用greater),可以自定义检验函数,再通过method参数指定该函数,但常规同方向单侧检验用上述方法即可。
内容的提问来源于stack exchange,提问作者stibb
相关产品推荐
相关产品推荐

