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

使用stat_compare_means的comparisons参数时无法修改字体求助

解决stat_compare_means()带comparisons参数时字体不生效的问题

当使用stat_compare_means()的comparisons参数添加比较括号时,直接设置family或全局theme的字体不会影响p值标注——这是因为该模式下标注由ggsignif包的geom_signif生成,不属于ggplot默认主题控制的文本元素。以下是解决方法:

步骤1:映射serif到Times New Roman(Windows系统)

先运行以下代码,让R的serif字体族对应系统的Times New Roman:

windowsFonts(serif = windowsFont("Times New Roman"))

步骤2:通过annotation.args传递字体参数

修改stat_compare_means()的调用,用annotation.args参数将字体族传递给标注文本:

library(ggpubr)

ggboxplot(ToothGrowth, x = "supp", y = "len",
          color = "supp", palette = "jco",
          add = "jitter",
          facet.by = "dose", 
          short.panel.labs = FALSE) +
stat_compare_means(comparisons = list(c("OJ", "VC")),
                   label = "p.format",
                   size = 5,
                   annotation.args = list(family = "serif"))

原理说明

当stat_compare_means()启用comparisons参数时,会调用ggsignif::geom_signif绘制比较线和标注。此时标注文本的样式需要通过annotation.args直接传递给geom_signif的文本生成逻辑,而非依赖ggplot的theme或stat_compare_means()的顶层family参数。

内容的提问来源于stack exchange,提问作者Alex Gould

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:46:07