如何用ggstatsplot按FAB分类批量绘制相关性散点图?
批量按FAB分类绘制相关性散点图的解决方案
数据预处理
先过滤掉FAB分类中的nc类,仅保留M0-M7分组:
library(dplyr) # 假设你的数据集名为df filtered_df <- df %>% filter(FAB %in% paste0("M", 0:7))
方法1:ggstatsplot自带分组函数(最简方案)
ggstatsplot提供了grouped_ggscatterstats函数,专门用于按分组变量批量生成统计绘图,无需手动拆分数据集:
library(ggstatsplot) grouped_ggscatterstats( data = filtered_df, x = AGE, y = Wbc, grouping.var = FAB, # 指定分组变量为FAB cor.method = "pearson", # 可选:指定相关性分析方法 title.prefix = "FAB分类", # 子图标题前缀 ggtheme = ggplot2::theme_bw() # 可选:调整绘图主题 )
该函数会自动为每个FAB分类生成独立散点图,并输出对应的相关性统计结果(相关系数、p值等)。
方法2:purrr+patchwork实现灵活定制
如果需要对单个子图做个性化调整,可通过purrr遍历分组生成图形,再用patchwork拼接:
library(purrr) library(patchwork) # 获取所有目标FAB分组 fab_groups <- unique(filtered_df$FAB) # 遍历生成每个分组的散点图 plot_list <- map(fab_groups, function(group) { ggscatterstats( data = filtered_df %>% filter(FAB == group), x = AGE, y = Wbc, title = paste("FAB:", group), cor.method = "pearson" ) }) # 拼接所有图形(可调整行列数) combined_plot <- wrap_plots(plot_list, ncol = 2) print(combined_plot)
导出统计结果
若需要提取所有分组的相关性统计数据,可在grouped_ggscatterstats中设置output = "results":
stats_results <- grouped_ggscatterstats( data = filtered_df, x = AGE, y = Wbc, grouping.var = FAB, output = "results" ) print(stats_results)
内容的提问来源于stack exchange,提问作者PesKchan
相关产品推荐
相关产品推荐

