pythonic生物人

轻松添加P值!

本期分享如何使用R为为分组数据差异添加统计检验P value。

使用R ggplot2自带的鸢尾花iris数据集,比较setosa、versicolor、virginica三类鸢尾花的Sepal.Width是否具有显著差异。

下文代码使用时,确保R中已安装:"ggplot2","ggsignif","ggpubr","ggbeeswarm","ggtext" 和"showtext"包。


数值格式 P value

详细注释代码,

library(ggplot2)      # 调用数据iris,使用geom_boxplot()绘制箱图
library(ggsignif)     # 使用geom_signif()添加p值
library(ggpubr)       # 使用theme_pubr()设置绘图主题
library(ggbeeswarm)   # 使用geom_quasirandom()添加蜂窝图
library(ggtext)       # 使用element_markdown()设置文字显示
library(showtext)     # 使用showtext_auto()解决R中中文字体显示「豆腐块」问题
showtext_auto()

ggplot(iris, aes(Species, Sepal.Width, fill = Species)) +
  geom_boxplot(fill = "transparent") +  # 绘制箱图
  geom_quasirandom(shape = 21, color = "black", 
                   alpha = 1, size = 5) +  # 绘制抖动图
  geom_signif(  # 添加p值
    comparisons = list(
      c("setosa", "virginica"),
      c("setosa", "versicolor"),
      c("virginica", "versicolor")
    ),
    test = "t.test",
    step_increase = 0.1, textsize = 4,
    map_signif_level = function(p) 
      sprintf("%.2g", p)  # 设置p值显示样式为:数值P value
  ) +
  scale_fill_manual(values = c(  # 设置抖动图填充色
    "setosa" = "#2e9695",
    "versicolor" = "#fca133",
    "virginica" = "#7193cf"
  )) + 
  labs(  # 设置标题
    caption = "Author: <span style='color:#01a2d9'>Pythonic生物人</span>"
  ) +
  theme_pubr() +  # 设置绘图主题
  theme(legend.position = "none") +  # 关闭图例
  theme(
    plot.caption = element_markdown(hjust = 0.8, 
                                    vjust = 0.8, 
                                    size = 11, 
                                    face = "bold")
  )

Image
数值 P value效果图

“*”格式 P value

详细注释代码,

library(ggplot2)      # 调用数据iris,使用geom_boxplot()绘制箱图
library(ggsignif)     # 使用geom_signif()添加p值
library(ggpubr)       # 使用theme_pubr()设置绘图主题
library(ggbeeswarm)   # 使用geom_quasirandom()添加蜂窝图
library(ggtext)       # 使用element_markdown()设置文字显示
library(showtext)     # 使用showtext_auto()解决R中中文字体显示「豆腐块」问题
showtext_auto()

ggplot(iris, aes(Species, Sepal.Width, fill = Species)) +
  geom_boxplot(fill = "transparent") +  # 绘制箱图
  geom_quasirandom(shape = 21, color = "black", 
                   alpha = 1, size = 5) +  # 绘制抖动图
  geom_signif(  # 添加p值
    comparisons = list(
      c("setosa", "virginica"),
      c("setosa", "versicolor"),
      c("virginica", "versicolor")
    ),
    test = "t.test",
    step_increase = 0.1, textsize = 4,
    map_signif_level = T  # 设置p值显示样式为:“*”P value
  ) +
  scale_fill_manual(values = c(  # 设置抖动图填充色
    "setosa" = "#2e9695",
    "versicolor" = "#fca133",
    "virginica" = "#7193cf"
  )) + 
  labs(  # 设置标题
    caption = "Author: <span style='color:#01a2d9'>Pythonic生物人</span>"
  ) +
  theme_pubr() +  # 设置绘图主题
  theme(legend.position = "none") +  # 关闭图例
  theme(
    plot.caption = element_markdown(hjust = 0.8, 
                                    vjust = 0.8, 
                                    size = 11, 
                                    face = "bold")
  )

Image
“*” 格式P value效果图

“ns”格式 P value

详细注释代码,

library(ggplot2)      # 调用数据iris,使用geom_boxplot()绘制箱图
library(ggsignif)     # 使用geom_signif()添加p值
library(ggpubr)       # 使用theme_pubr()设置绘图主题
library(ggbeeswarm)   # 使用geom_quasirandom()添加蜂窝图
library(ggtext)       # 使用element_markdown()设置文字显示
library(showtext)     # 使用showtext_auto()解决R中中文字体显示「豆腐块」问题
showtext_auto()

ggplot(iris, aes(Species, Sepal.Width, fill = Species)) +
  geom_boxplot(fill = "transparent") +  # 绘制箱图
  geom_quasirandom(shape = 21, color = "black", 
                   alpha = 1, size = 5) +  # 绘制抖动图
  geom_signif(  # 添加p值
    comparisons = list(
      c("setosa", "virginica"),
      c("setosa", "versicolor"),
      c("virginica", "versicolor")
    ),
    test = "t.test",
    step_increase = 0.1, textsize = 4, 
    annotations = c('***','***','NS'),
    map_signif_level = T  # 设置p值显示样式为:“*”、“NS”
  ) +
  scale_fill_manual(values = c(  # 设置抖动图填充色
    "setosa" = "#2e9695",
    "versicolor" = "#fca133",
    "virginica" = "#7193cf"
  )) + 
  labs(  # 设置标题
    caption = "Author: <span style='color:#01a2d9'>Pythonic生物人</span>"
  ) +
  theme_pubr() +  # 设置绘图主题
  theme(legend.position = "none") +  # 关闭图例
  theme(
    plot.caption = element_markdown(hjust = 0.8, 
                                    vjust = 0.8, 
                                    size = 11, 
                                    face = "bold")
  )

Image
“ns”格式 P value
-END-
推荐阅读:

Image

我的学习小圈子👉
加入

Image

赞、在看就是最大的支持Image