该内容已被发布者删除 该内容被自由微信恢复
文章于 3月31日 下午 5:00 被检测为删除。
查看原文
被用户删除
其他

R语言绘图 | 快速为ggplot2图形添加统计P值

小陈的R语言笔记 小陈的R语言笔記 2024-03-31

准备

ggpval包可以执行统计检验,并且自动在ggplot2图形上添加相应的P值,P值可以显示为数字或者星形符号,也可以显示为文本注释。

install.packages("ggpval")  # 安装 ggpval 包

library(ggpval)             # 加载 ggpval 包
library(data.table)         # 加载 data.table 包
library(ggplot2)            # 加载 ggplot2 包

A <- rnorm(200, 0, 3)       # 生成第一组随机数
B <- rnorm(200, 2, 4)       # 生成第二组随机数
G <- rep(c("G1""G2"), each = 100)  # 生成分组信息
dt <- data.table(A, B, G)   # 创建数据表
dt <- melt(dt, id.vars = "G")  # 融合数据表,保留 G 列作为标识符
theme_set(theme_classic())   # 设置图形主题

箱型图

plt <- ggplot(dt, aes(variable, value)) +  # 创建基础图形对象
  geom_boxplot() +              # 添加箱线图层
  geom_jitter()                 # 添加抖动点层
add_pval(plt,                   # 添加 p 值到图形中
         pairs = list(c(1, 2)), 
         test='wilcox.test'
         alternative='two.sided')

转换为 plotly 图:

plt <- ggplot(dt, aes(variable, value)) +  # 创建基础图形对象
  geom_boxplot() +              # 添加箱线图层
  geom_jitter()                 # 添加抖动点层
plt <- add_pval(plt,            # 添加 p 值到图形中,使用 plotly
                pairs = list(c(1, 2)), 
                test = "t.test"
                plotly=TRUE)
plotly::ggplotly(plt)           # 转换为 plotly 图

分面箱型图

plt <- ggplot(dt, aes(variable, value)) +  # 创建基础图形对象
  geom_boxplot() +              # 添加箱线图层
  geom_jitter() +               # 添加抖动点层
  facet_wrap(~G)                # 按照 G 分面展示
add_pval(plt,                   # 添加 p 值到图形中
         pairs = list(c(1, 2)))

annotation指定添加注释文本:

add_pval(plt,                   # 添加带注释的 p 值到图形中
         pairs = list(c(1, 2)), 
         annotation = "Awesome")

annotation参数添加list注释:

add_pval(plt,                   # 添加带注释的 p 值到图形中,分别指定注释文本
         pairs = list(c(1, 2)), 
         annotation = list("Awesome1""Awesome2"))

条形图

dt[, mu := mean(value),         # 计算每组每个变量的均值
   by = c("G""variable")]

dt[, se := sd(value) / .N,      # 计算每组每个变量的标准误
   by = c("G""variable")]

plt_bar <- ggplot(dt,           # 创建条形图基础图形对象
                  aes(x=variable, 
                      y=mu, 
                      fill = variable)) +
  geom_bar(stat = "identity",   # 添加条形图层
           position = 'dodge') +
  geom_errorbar(aes(ymin=mu-se, 
                    ymax=mu+se),  # 添加误差线
                width = .2) +
  facet_wrap(~G)                # 按照 G 分面展示

add_pval(plt_bar,               # 添加 p 值到条形图中
         pairs = list(c(1, 2)), 
         response = 'value')

显示星号:

add_pval(plt_bar,               # 添加 p 值到条形图中,使用 t.test,显示星号
         pairs = list(c(1, 2)), 
         test = 't.test',
         alternative = "less",
         response = 'value',
         pval_star = T)

参考资料:https://github.com/s6juncheng/ggpval?tab=readme-ov-file



继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存