ggpubr绘图删除箱线图后如何重新添加对应图层
问题原因
- 你之前执行的
plot$layers <- plot$layers[-1]仅作用于当时你赋值的那个特定plot绘图对象,不会修改全局环境或ggpubr包的默认参数,只要重新生成新的绘图对象就不会受该操作影响。 - 你当前绘图代码中
ggpaired的width参数设为了0,该参数控制箱线图的宽度,设为0会导致箱线图完全不可见,这是没有箱线的核心原因。
修复方案
你只需要调整2处参数即可得到目标效果:
- 把
width = 0改成width = 0.5(可根据需求调整箱线宽度数值) - 若要隐藏配对连线,不需要删层,直接设置
line.color = NA即可,比手动删层更稳妥
修改后的完整可运行代码如下:
library(ggpubr) library(magrittr) # 示例数据 data = structure(list(...1 = c("1", "2", "3", "4", "5", "6", "7", "1", "2", "3", "4", "5", "6", "7"), subject = c("G5", "G6", "G7", "G8", "G12", "G13", "G14", "G5", "G6", "G7", "G8", "G12", "G13", "G14"), value = c(0.733377605384461, 1.65662450012502, 1.38787220722645, 1.37053666253192, 1.62679859595799, 0.541814589221617, 0.966081047005121, 0.892329475047538, 1.75954000718932, 1.36253416559681, 1.22104521047091, 1.61168414813187, 0.940537918248694, 1.00171611627718), treatment = c("Drug", "Drug", "Drug", "Drug", "Drug", "Drug", "Drug", "Mock", "Mock", "Mock", "Mock", "Mock", "Mock", "Mock")), row.names = c(NA, -14L ), class = "data.frame") # 绘图代码 ggpar(ggpaired(data, x = "treatment", y = "value", color = "treatment", palette = c("#202960", "#8CC63E"), add = "dotplot", title = "Jiang (TIDE) CTL Panel - Mock vs. Drug", xlab = "Treatment", ylab = "CTL Score", width = 0.5, point.size = 2, linetype = "dashed", line.color = NA) + stat_compare_means(method = "t.test", paired = TRUE, label.x = 1.4, label.y = 1.8) + scale_y_continuous(breaks = c(0,0.25,0.5,0.75,1,1.25,1.5,1.75,2,2.25,2.5), labels = c("0","","0.5","","1.0","","1.5","","2.0","","2.5")) + coord_cartesian(ylim = c(0,2)), legend = "FALSE")
补充说明
如果之后有调整图层的需求,你可以用print(plot$layers)查看当前绘图对象的所有图层顺序,再按需增删,不会影响其他绘图的生成。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

