You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在多组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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:44:57