使用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
相关产品推荐
相关产品推荐

