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

如何调整ggplot中显著性标注线的x轴位置?

问题原因
  • 你调用add_xy_position()计算显著性标注的坐标时,参考的是Material_Concentration列的默认排序(通常为字符串字典序)
  • 后续仅通过scale_x_discrete(limits = )修改x轴展示顺序,不会同步更新之前已经计算完成的标注坐标,因此出现标注错位问题。
解决方法

先将分组列设置为你需要的顺序的因子类型,再执行统计检验和标注坐标计算,无需额外通过scale_x_discrete调整顺序即可得到正确的x轴排序和标注位置。

修正后的完整代码如下:

library(tidyverse)
library(here)
library(readxl)
library(ggforce)
library(ggplot2)
library(ggsignif)
library(ggpubr)
library(rstatix)

data <- read.csv(here("data", "data.csv"), sep = ";")

# 新增:先将分组列设置为目标顺序的因子
target_order <- c("250 µg/ml", "100 µg/ml", "50 µg/ml", "25 µg/ml", "%0", "%10")
data$Material_Concentration <- factor(data$Material_Concentration, levels = target_order)

# 定义两两比较组
my_comparisons <- list( c("%0", "250 µg/ml"), c("%0", "100 µg/ml"), c("%0", "50 µg/ml"), c("%0", "25 µg/ml"))

# 统计检验
stat.test <- data %>%
  t_test(OD ~ Material_Concentration, p.adjust.method = "bonferroni", comparisons = my_comparisons) %>%
  add_significance("p.adj")

stat.test

# 此时计算的标注坐标已经对应自定义的因子顺序
stat.test <- stat.test %>%
  add_xy_position(x = "Material_Concentration")

# 绘图
p <- ggplot(data, aes(Material_Concentration, OD, colour = Material_Concentration))+          
  stat_summary(fun = mean, geom = "col", aes(fill = Material_Concentration), show.legend = FALSE)+
  stat_summary(fun.data = mean_se, geom = "errorbar", width = 0.2, show.legend = FALSE)+
  xlab("Treatment Concentrations")+
  ylab("Average OD")+
  theme(panel.background = element_blank(), plot.title = element_text(color="red", size=40, face="bold.italic", hjust = 0.5), 
        axis.text.x = element_text(size = 20, angle = 45, hjust = 1), 
        axis.text.y = element_text(size = 15), 
        axis.title.y = element_text(size = 15), 
        axis.title.x = element_text(size = 15))+
  stat_pvalue_manual(stat.test, label = "p.adj.signif")
  
p

内容的提问来源于stack exchange,提问作者Erdem Erikçi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:18:02