查看原文
其他

让ggplot2变成Graphpad Prism样式:ggprims(04)

阿越就是我 医学和生信笔记 2023-02-25

简介

ggprismggplot2的扩展包,可以让你的图形看起来像GraphPad Prism形式。使用起来非常简单,一行代码即可!支持目前Graphpad Prism的所有主题!

前面介绍了theme_prismcolor/fill/shape,和坐标轴修改,接下来介绍添加显著性P值

安装

install.packages("ggprism")

# 或使用github版
remotes::install_github("csdaw/ggprism")

添加P值

GraphPad Prism 9 已经支持自动添加P值了,因此ggprism也增加了add_pvalue函数,添加P值和显著性标记。

这个函数其实是对stat_pvalue_manual函数的重写,stat_pvalue_manual又是基于ggsignif包写的,所以掌握了ggsignif,你就掌握了R语言添加显著性标记的技能。

基本使用

需要提供一个数据框,至少需要4列:

  • xmin:左侧位置,默认列名是group1
  • xmax:右侧位置,默认列名是group2
  • label:显示的内容,默认列名是label
  • y.position:放置位置的纵坐标,默认列名是y.position
p <- ggplot(sleep, aes(x = group, y = extra)) +
  geom_jitter(aes(shape = group), width = 0.1) + 
  stat_summary(geom = "crossbar", fun = mean, colour = "red", width = 0.2) + 
  theme_prism() + 
  theme(legend.position = "none")
p

计算P值,准备数据框:

result <- t.test(extra ~ group, data = sleep)$p.value
result <- signif(result, digits = 3)

df_p_val <- data.frame(
  group1 = "1",
  group2 = "2",
  label = result,
  y.position = 6
)

df_p_val
##   group1 group2  label y.position
## 1      1      2 0.0794          6

只要把数据框传给add_pvalue就可以了:

p1 <- p + add_pvalue(df_p_val,
                     xmin = "group1",
                     xmax = "group2",
                     label = "label",
                     y.position = "y.position"
p1

当然还可以修改各种细节:

p1 <- p + add_pvalue(df_p_val,
                     colour = "red"# label
                     label.size = 8# label
                     fontface = "bold"# label
                     fontfamily = "serif"# label
                     angle = 45# label
                     hjust = 1# label
                     vjust = 2# label
                     bracket.colour = "blue"# bracket
                     bracket.size = 1# bracket
                     linetype = "dashed"# bracket
                     lineend = "round"# bracket

# 使用glue
p2 <- p + add_pvalue(df_p_val, label = "p = {label}")

# 让刻度线长一点并翻转图形
p3 <- p + add_pvalue(df_p_val, tip.length = 0.15, coord.flip = TRUE) + 
  coord_flip()

# 改变一条刻度线的长短
p4 <- p + add_pvalue(df_p_val, tip.length = c(0.20))

(p1 + p2) / (p3 + p4)

只添加显著性标记

当然也可以不显示刻度线和横线

p1 <- p + add_pvalue(df_p_val, label = "p = {label}"
                     remove.bracket = TRUE, x = 1# 1是放左边

p2 <- p + add_pvalue(df_p_val, label = "p = {label}"
                     remove.bracket = TRUE, x = 1.5# 1.5是放中间

p1 + p2

和rstatix配合

suppressMessages(library(tidyverse))

df_p_val <- ToothGrowth %>% 
  rstatix::group_by(supp) %>% 
  rstatix::t_test(len ~ dose) %>% 
  rstatix::add_xy_position()

p <- ggplot(ToothGrowth, aes(x = factor(dose), y = len)) + 
  geom_boxplot(aes(fill = supp)) + 
  theme_prism()

p + add_pvalue(df_p_val, 
               label = "p = {p.adj}",
               colour = "supp",
               fontface = "bold",
               step.group.by = "supp",
               step.increase = 0.1,
               tip.length = 0,
               bracket.colour = "black",
               show.legend = FALSE)



以上就是今天的内容,希望对你有帮助哦!欢迎点赞、在看、关注、转发

欢迎在评论区留言或直接添加我的微信!




欢迎关注我的公众号:医学和生信笔记

医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!


往期精彩内容:

R语言处理因子之forcats包介绍(1)


R语言处理因子之forcats包介绍(2)


R语言处理因子之forcats包介绍(3)


R语言处理因子之forcats包介绍(4)


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

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