ggpubr包ggerrorplot如何修改数据点形状适配黑白印刷
问题原因
shape = "combi"参数未生效有两个核心原因:
- 当前设置
add = "mean"时,默认仅绘制均值点与误差线,不会自动同步映射形状美学到分组变量,需要显式声明形状映射规则,同时搭配对应点绘制参数。 - R内置形状调色板仅提供6种可区分的默认形状,7个分组需要手动指定形状集合,否则会出现形状重复无法区分的问题。
实现方案
直接调整绘图参数,显式映射形状到分组变量,同时手动指定7种适合黑白印刷的差异化点形状即可,后续添加显著性标记的操作不受影响。
修正后可直接运行的代码如下:
library(ggpubr) # 测试数据集 subset_PUFA_together <- structure(list(Lipid_Species = structure(c(3L, 3L, 2L, 2L, 3L, 6L, 4L, 6L, 2L, 5L), .Label = c("LIN", "ALA", "SDA", "EPA", "ARA", "DHA"), class = "factor"), isotopic_ratio = c(NA, -47.8432292, -40.4566585, -43.2375195, NA, NA, -41.1712774, NA, -38.7533203, -45.66419779), combi = structure(c(3L, 4L, 5L, 3L, 2L, 1L, 7L, 2L, 2L, 3L), .Label = c("Fresh leaves", "Submerged leaves", "Epilithon", "Emphemeroptera (Grazer)", "Plecoptera (Shredder)", "Gammarus (Shredder)", "Plecoptera (Predator)"), class = "factor")), row.names = c(13802L, 13874L, 71L, 4L, 14551L, 4956L, 5993L, 4921L, 779L, 887L), class = "data.frame") # 修正后的绘图代码 ggerrorplot(subset_PUFA_together, x = "Lipid_Species", y = "isotopic_ratio", add = c("point", "mean"), # 同时绘制原始散点与分组均值,不需要散点可改回"mean" error.plot = "errorbar", color = "combi", shape = "combi", # 显式将形状映射到combi分组 palette = c( "#009E73","#E69F00","#F0E442","#0072B2", "#D55E00", "#CC79A7", "#000000"), shape.manual = c(16,17,15,18,3,4,8), # 手动指定7种黑白易区分的点形状 legend = "right", position = position_dodge(width=0.4), size = 1.4, xlab = "", ylab = "")
参数说明
shape.manual传入的是ggplot2内置的形状编号,示例选用的实心圆、实心三角、实心方块、实心菱形、十字、叉号、星号7种形状视觉差异大,无彩色印刷时也能清晰区分分组,你可以根据自己的排版需求替换为其他形状编号。- 如果不需要展示原始数据散点,仅保留均值点和误差线,把
add参数改回"mean"即可,形状映射依然生效。 - 后续添加ggpubr自带的显著性星号标注时,直接通过
+拼接stat_compare_means()函数即可,形状和颜色映射不会干扰显著性标注的正常渲染。
内容的提问来源于stack exchange,提问作者Nadiine El Nino
相关产品推荐
相关产品推荐

