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

如何用R为Control、QA-PBS、QA-iPSC三组绘制QQ图?

给R语言分组绘制QQ图的解决方案

嗨,刚学R就着手处理作业里的QQ图问题,完全能理解你的困惑!我会给你两种实用的方法,分别用基础R和ggplot2包来实现三个组的QQ图绘制,都很适合新手上手。

首先先确认你的数据结构没问题,你提供的Data是标准的长格式数据,非常适合分组可视化。


方法1:用基础R绘制分组QQ图

基础R自带的qqnorm()和qqline()函数就能完成任务,我们只需要先把数据按分组拆分,再批量绘图:

  1. 先按group列拆分数据,把每个组的crossovers值单独提取出来:
# 拆分数据为列表,每个元素对应一个组的crossovers数据
data_groups <- split(Data$crossovers, Data$group)
  1. 设置画布布局,把三个QQ图放在同一行:
# 将画布设置为1行3列,方便同时展示三个组的图
par(mfrow = c(1, 3))
  1. 循环遍历每个组,绘制QQ图和参考线:
for (group_name in names(data_groups)) {
  # 绘制QQ点图,标题包含组名
  qqnorm(data_groups[[group_name]], main = paste("QQ Plot -", group_name))
  # 添加红色的参考线,帮助判断正态性
  qqline(data_groups[[group_name]], col = "red")
}

# 恢复画布的默认布局(避免影响后续绘图)
par(mfrow = c(1, 1))

方法2:用ggplot2绘制更美观的分组QQ图

如果你想让图更美观、更易调整格式,推荐用tidyverse生态里的ggplot2包,它对长格式数据的支持非常友好:

  1. 先加载ggplot2包(如果没安装的话,先运行install.packages("ggplot2")):
library(ggplot2)
  1. 一行代码完成分组QQ图绘制:
ggplot(Data, aes(sample = crossovers)) +
  geom_qq() +  # 绘制QQ点
  geom_qq_line(color = "red") +  # 添加正态参考线
  facet_wrap(~ group) +  # 按group列自动分面,每个组一个子图
  labs(
    title = "QQ Plots by Treatment Group",
    x = "Theoretical Quantiles",
    y = "Sample Crossovers"
  ) +
  theme_bw()  # 用简洁的黑白主题

这段代码会自动帮你把三个组的QQ图排列好,而且后续调整颜色、字体、布局都很方便。


小提示:你的crossovers是计数型数据,QQ图主要用来检验数据是否符合正态分布,如果后续需要做统计检验,可能还要结合Shapiro-Wilk检验等方法哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:13:52