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

R语言for循环生成Q-Q图的布局排版与ggplot2美化求助

实现方案

核心逻辑:使用ggplot2的原生Q-Q图图层生成标准化图形,通过分面功能将10个样本的Q-Q图按2行5列自动排布在同一页面,适配性和美观度远优于基础绘图方案,无需手动调整layout参数。

完整可运行代码

# 依赖包安装(首次运行先执行)
# install.packages("tidyverse")
library(tidyverse)

set.seed(666999)

# 自定义绘图函数,入参n为单个样本的样本量
plot_qq_group <- function(n) {
  n_samples <- 10
  # 生成结构化绘图数据,替代循环低效操作
  plot_data <- map_dfr(1:n_samples, function(k) {
    tibble(
      sample_id = factor(k, levels = 1:n_samples), # 样本编号用于分面排序
      value = rnorm(n, mean = 0, sd = 1) # 生成标准正态分布样本
    )
  })
  
  # 绘制分面Q-Q图
  ggplot(plot_data, aes(sample = value)) +
    geom_qq(alpha = 0.6, size = 1.2) + # 散点加透明度避免重叠
    geom_qq_line(color = "#d92121", linewidth = 0.8) + # 红色参考线更醒目
    facet_wrap(~sample_id, ncol = 5, scales = "fixed") + # 固定坐标轴方便多图对比
    labs(
      title = bquote(Q-Q图(样本量n == .(n))),
      x = "理论分位数",
      y = "样本分位数"
    ) +
    theme_bw(base_size = 12) + # 清爽的白底主题
    theme(
      plot.title = element_text(hjust = 0.5, face = "bold"),
      panel.grid = element_blank() # 移除网格线突出数据点
    )
}

调用方法

单样本量绘图

直接运行函数即可在RStudio绘图区看到适配好的2行5列共10张Q-Q图:

plot_qq_group(100)

# 如需导出为本地图片,设置宽高即可适配
ggsave("qq_n100.png", width = 15, height = 7, dpi = 120)

批量生成多样本量结果

可一次性生成10、20、50、100四个样本量的结果,每个样本量单独占一页:

walk(c(10,20,50,100), function(n) {
  p <- plot_qq_group(n)
  print(p)
  # 批量导出可放开下方注释,自动按样本量命名文件
  # ggsave(paste0("qq_n", n, ".png"), p, width =15, height=7, dpi=120)
})

自定义调整说明

  • 调整排布:修改facet_wrap的ncol参数即可,比如设置ncol=2就是5行2列排布
  • 调整尺寸:导出时修改ggsave的width和height参数即可,单位默认为英寸
  • 样式调整:可自定义geom_qq和geom_qq_line的颜色、大小、线型参数,适配不同展示需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:24:00