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

如何使用R语言ggplot绘制目标样式的分组散点图?

ggplot2实现病例/对照分组b值散点图方法

你手里的宽表格式需要先转成ggplot适配的长格式,再叠加散点层和分组统计层就能快速出图,步骤如下:

  • 数据预处理
    原始df结构为每行对应1个个体,包含1列存储case/control分组信息(示例代码假设列名为group),其余列均为不同的b值指标。先用tidyr把宽表转成长表,每行对应单个个体的单个b值观测:
# 加载需要的包
library(ggplot2)
library(tidyr)
library(dplyr)

# 宽转长
df_long <- df %>%
  pivot_longer(
    cols = -group, 
    names_to = "b_type", 
    values_to = "b_value"
  )
  • 核心绘图代码
    用geom_jitter做分组散点避免点重叠,stat_summary绘制每组的均值/中位统计线,和你示例图的样式对齐:
ggplot(df_long, aes(x = b_type, y = b_value, color = group)) +
  # 分组散点,自动对齐分组位置、加轻微抖动避免重叠
  geom_jitter(
    position = position_jitterdodge(jitter.width = 0.15, dodge.width = 0.75),
    alpha = 0.6, size = 1.1
  ) +
  # 绘制每组的统计横线,默认用均值,要换中位数就把fun参数改成median
  stat_summary(
    fun = mean, geom = "crossbar", width = 0.5,
    position = position_dodge(width = 0.75),
    aes(fill = group), color = "black", linewidth = 0.4
  ) +
  # 自定义配色,和示例的红蓝分组匹配
  scale_color_manual(values = c("case" = "#E41A1C", "control" = "#377EB8")) +
  scale_fill_manual(values = c("case" = "#E41A1C", "control" = "#377EB8"), guide = "none") +
  # 坐标轴、图例设置
  labs(x = "b值指标", y = "b值", color = "分组") +
  theme_classic() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    legend.position = "top"
  )

小调整提示:如果需要加组间显著性标记,可以加载ggsignif包后叠加geom_signif()层设置标记位置和显著性阈值;散点透明度、大小、抖动幅度都可以通过对应参数微调,适配你的数据分布。

内容的提问来源于stack exchange,提问作者Gleyson Carvalho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:39:58