在多组Dot & Whisker图中添加显著性星号的技术需求
在Dot & Whisker多组图中添加显著性星号
核心思路
你已完成显著性星号的生成逻辑,只需在现有绘图代码中添加geom_text()层,将星号定位在子图顶部(y=1),并通过位置偏移与对应数据点对齐,同时继承颜色映射保持同色。
修改后的完整代码
# Load libraries library(dotwhisker) library(tidyverse) rm(list=ls()) # 1. 生成显著性星号 df <- df |> filter(term != "(Intercept)") |> mutate(label = case_when(p.value < 0.01 ~ "**", p.value < 0.05 ~ "*", .default = "")) # 2. 绘制图形并添加星号 small_multiple(df, dot_args = list(aes(shape = dimension, col = dimension), size = 1.6), whisker_args = list(aes(linetype = dimension)), dodge_size = 0.7 ) + theme_bw(base_size = 25) + ylab("") + geom_hline(yintercept = 0, colour = "grey60", linetype = 2) + # 添加显著性星号层 geom_text(aes(label = label, color = dimension), y = 1, position = position_dodge(width = 0.7), # 与数据点偏移量保持一致 size = 8, # 调整星号大小匹配整体风格 fontface = "bold") + theme( plot.title = element_text(face = "bold"), legend.position = "none", axis.text.x = element_text(angle = 60, hjust = 1), axis.text = element_text(size = 25), axis.title = element_text(size = 30), strip.text = element_text(size = 25) ) + scale_color_manual(values = c("#FF1F5B", "#009ADE", "#FFC61E")) + ylim(-0.8, 1)
关键细节说明
position_dodge(width = 0.7):必须与small_multiple()中的dodge_size参数值一致,确保星号和对应数据点水平对齐y = 1:将星号固定在你指定的y轴顶部位置color = dimension:继承颜色映射,让星号与对应维度的数据点颜色保持一致- 过滤空标签(可选优化):如果想避免绘制空字符串,可以在
geom_text()中添加data = filter(df, label != ""),提升绘图效率
内容的提问来源于stack exchange,提问作者user947548
相关产品推荐
相关产品推荐

