暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言nature绘图系列4|散点图

2294
点击关注了解更多哦

本文主要展示如何利用R语言绘制来自nature期刊ABO genotype alters the gut microbiota by regulating GalNAc levels in pigs(Hui Yang, et al,2022)[1]一文中的Extended Data Fig.3。该图形式为散点图,并添加了拟合曲线以及相关性系数r及对应p值,用于展示样本之间的关联性。如下图所示:

1、图形绘制

library(ggpubr)
library(ggplot2)
library(ggpmisc)
library(dplyr)

her_out <- read.delim("result.txt")
her_out <- her_out %>% dplyr::select(Sample_type,F6_her ,F7_her)
her_out$Sample_type <- factor(her_out$Sample_type, levels = c("D25","D120","D240","CC","IC"))
head(her_out)
#  Sample_type F6_her F7_her
#1         D25 0.0000     NA
#2        D120 0.0000     NA
#3        D240 0.0315     NA
#4          IC 0.0000     NA
#5         D25 0.0000     NA
#6        D240 0.0297     NA
str(her_out)
#'data.frame': 17223 obs. of  3 variables:
# $ Sample_type: Factor w/ 5 levels "D25","D120","D240",..: 1 2 3 5 1 3 5 5 1 3 ...
# $ F6_her     : num  0 0 0.0315 0 0 0.0297 0 0 0 0.0215 ...
# $ F7_her     : num  NA NA NA NA NA NA NA NA NA NA ...

# 图形绘制
ggplot(her_out, aes(F6_her, F7_her)) + 
  geom_point(alpha = 0.5) + 
  stat_cor(p.accuracy = 0.01, r.accuracy = 0.01, method = "pearson") + #spearman
  geom_smooth(method = "lm") + 
  scale_y_continuous(breaks = seq(0, 0.6, 0.1)) + 
  scale_x_continuous(breaks = seq(0, 0.6, 0.1)) + 
  facet_wrap(~Sample_type) + 
  theme_bw() + 
  theme(axis.text = element_text(size = 12), 
        strip.text = element_text(size = 12),
        axis.text.x = element_text(angle = 90, vjust = 0.5), 
        axis.title = element_text(size = 14),
        panel.background = element_rect(fill = "#f0f0f0"),
        panel.grid.major = element_line(color = "white", linetype = "dotted", size = 1)) + 
  labs(x = "Heritability in F6 generation", y = "Heritability in F7 generation")

该图主要使用geom_point() 函数绘制散点图,使用geom_smooth() 函数添加拟合曲线,使用ggpubr包中的 stat_cor() 函数来添加相关系数及p值,并利用facet_wrap() 函数进行分面。

2、进一步调整

修改主题

ggplot(her_out, aes(F6_her, F7_her)) + 
  geom_point(alpha = 0.5) + 
  stat_cor(p.accuracy = 0.01, r.accuracy = 0.01, method = "pearson") + #spearman
  geom_smooth(method = "lm", size = 2) + 
  scale_y_continuous(breaks = seq(0, 0.6, 0.1)) + 
  scale_x_continuous(breaks = seq(0, 0.6, 0.1)) + 
  facet_wrap(~Sample_type) + 
  theme_bw() + 
  theme(axis.text = element_text(size = 12),
        axis.text.x = element_text(angle = 90, vjust = 0.5), 
        strip.text = element_text(size = 12),
        axis.title = element_text(size = 14),
        panel.grid = element_blank()) + 
  labs(x = "Heritability in F6 generation", y = "Heritability in F7 generation")

使用ggpmisc包添加相关系数

此外,除了使用ggpubr包来添加相关系数外,还可以使用ggpmisc包中的stat_correlation() 函数来添加变量相关性及p值。

ggplot(her_out, aes(F6_her, F7_her)) + 
  geom_point(alpha = 0.5) + 
  stat_correlation(aes(label = paste(after_stat(cor.label), after_stat(p.value.label), after_stat(n.label), sep = '*";"*')),
                   method = "pearson") + 
  geom_smooth(method = "lm", size = 2) + 
  scale_y_continuous(breaks = seq(0, 0.6, 0.1)) + 
  scale_x_continuous(breaks = seq(0, 0.6, 0.1)) + 
  facet_wrap(~Sample_type) + 
  theme_bw() + 
  theme(axis.text = element_text(size = 12),
        axis.text.x = element_text(angle = 90, vjust = 0.5), 
        strip.text = element_text(size = 12),
        axis.title = element_text(size = 14),
        panel.grid = element_blank()) + 
  labs(x = "Heritability in F6 generation", y = "Heritability in F7 generation")

使用spearman相关系数

ggplot(her_out, aes(F6_her, F7_her)) + 
  geom_point(alpha = 0.5) + 
  stat_correlation(aes(label = paste(after_stat(r.label), after_stat(p.value.label), after_stat(n.label), sep = '*";"*')),
                   method = "spearman", size = 5) + # spearman、pearson
  geom_smooth(method = "lm", size = 2) + 
  scale_y_continuous(breaks = seq(0, 0.6, 0.1)) + 
  scale_x_continuous(breaks = seq(0, 0.6, 0.1)) + 
  facet_wrap(~Sample_type) + 
  theme_bw() + 
  theme(axis.text = element_text(size = 12),
        axis.text.x = element_text(angle = 90, vjust = 0.5), 
        strip.text = element_text(size = 12),
        axis.title = element_text(size = 14),
        panel.grid = element_blank()) + 
  labs(x = "Heritability in F6 generation", y = "Heritability in F7 generation")

将显著性及p值拆分

ggplot(her_out, aes(F6_her, F7_her)) + 
  geom_point(alpha = 0.5) + 
  stat_correlation(aes(label = after_stat(cor.label), method = "pearson"), label.x = 0.1, label.y = 0.95) +  # spearman、pearson
  stat_correlation(aes(label = after_stat(p.value.label), method = "pearson"), label.x = 0.1, label.y = 0.85) +  
  stat_correlation(aes(label = after_stat(n.label)), label.x = 0.1, label.y = 0.75) +
  geom_smooth(method = "lm", size = 2) + 
  scale_y_continuous(breaks = seq(0, 0.6, 0.1)) + 
  scale_x_continuous(breaks = seq(0, 0.6, 0.1)) + 
  facet_wrap(~Sample_type) + 
  theme_bw() + 
  theme(axis.text = element_text(size = 12),
        axis.text.x = element_text(angle = 90, vjust = 0.5), 
        strip.text = element_text(size = 12),
        axis.title = element_text(size = 14),
        panel.grid = element_blank()) + 
  labs(x = "Heritability in F6 generation", y = "Heritability in F7 generation")

3、其他

其他绘图方法可进一步阅读公众号其他文章。


如有帮助请多多点赞哦!

参考资料

[1]

Yang, H., Wu, J., Huang, X. et al. ABO genotype alters the gut microbiota by regulating GalNAc levels in pigs. Nature 606, 358–367 (2022). : https://doi.org/10.1038/s41586-022-04769-z


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论