使用ggpubr与ggbreak绘图时,无法移除y轴标题中的'y.position'
解决ggbreak与ggpubr联用导致y轴标题异常的问题
问题现象
使用ggbreak拆分并缩放图表y轴,同时通过ggpubr的stat_pvalue_manual添加统计p值时,y轴标题被错误替换为y.position,无法正常显示原本的轴标题(示例中为len)。
解决方案
问题源于两个包图层交互时的轴标题继承问题,只需显式指定y轴标题即可覆盖异常值,同时保留轴拆分和p值标注功能,有两种实现方式:
方式1:在scale_y_break中指定标题
直接在scale_y_break函数中通过name参数设置y轴标题:
library(ggplot2) library(ggbreak) library(ggpubr) library(dplyr) df <- ToothGrowth bxp <- ggboxplot(df, x= "dose", y = "len", fill = "dose") stat.test1 <- compare_means( len ~ dose, data = df, method = "t.test" ) %>% mutate(y.position = c(29, 35, 39)) p <- bxp + stat_pvalue_manual(stat.test1, label = "p.adj") + scale_y_break(c(10, 10.5), scale = 2, name = "len") # 显式设置y轴标题 p
方式2:用ylab()单独设置标题
如果已经添加了scale_y_break,可以在图层末尾用ylab()函数单独指定标题:
p <- bxp + stat_pvalue_manual(stat.test1, label = "p.adj") + scale_y_break(c(10, 10.5), scale = 2) + ylab("len") # 单独设置y轴标题
原理说明
stat_pvalue_manual在传递参数时会临时使用y.position变量,scale_y_break在处理轴时错误继承了这个变量名作为轴标题,通过显式指定标题可以强制覆盖这个异常值,恢复原本的轴标签。
内容的提问来源于stack exchange,提问作者ZhuYi Wang
相关产品推荐
相关产品推荐

