其他
让ggplot2变成Graphpad Prism样式:ggprims(04)
简介
ggprism
是ggplot2
的扩展包,可以让你的图形看起来像GraphPad Prism形式。使用起来非常简单,一行代码即可!支持目前Graphpad Prism的所有主题!
前面介绍了theme_prism
,color/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.2, 0))
(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)